import random
def raaa(input_str):
assert len(input_str) == 13, "input_str must be 13 characters long"
seed = 42
random.seed(seed)
result = []
conversion_map = {} # 変換マップを保存する辞書
for i, char in enumerate(input_str):
if i == 0:
# 1桁目は0か1に変換
choices = [0, 1]
new_char = str(choices[int(char) % 2]) # 入力文字に対して適切な変換を選択
conversion_map[char] = new_char
result.append(new_char)
elif i == 1:
# 2桁目は0固定
new_char = '0'
conversion_map[char] = new_char
result.append(new_char)
elif i == 2:
# 3桁目は0〜9の範囲で変換
new_char = str(int(char) % 10)
conversion_map[char] = new_char
result.append(new_char)
elif i == 3:
# 4桁目は0か5に変換
choices = [0, 5]
new_char = str(choices[int(char) % 2]) # 入力文字に対して適切な変換を選択
conversion_map[char] = new_char
result.append(new_char)
elif i == 4 or i == 8 or i == 11:
# 5桁目、9桁目、12桁目は「.」固定
new_char = '.'
result.append(new_char)
elif i == 5 or i == 9:
# 6〜7桁目および10〜11桁目は00〜59の範囲で変換
new_char = str(int(char) % 6)
conversion_map[char] = new_char
result.append(new_char)
elif i == 6 or i == 10:
new_char = str((int(char) * 3) % 10) # 0〜9の範囲で変換
conversion_map[char] = new_char
result.append(new_char)
elif i == 7 or i == 12:
new_char = str((int(char) * 5) % 10) # 0〜9の範囲で変換
conversion_map[char] = new_char
result.append(new_char)
else:
result.append(char)
result_str = ''.join(result)
return result_str, conversion_map
# テスト
output, conversion_map = raaa("0123.11.22.33")
print("Output:", output) # 変換後の出力
print("Conversion Map:", conversion_map) # 変換マップ
output, conversion_map = raaa("0123.11.22.44")
print("Output:", output) # 変換後の出力
print("Conversion Map:", conversion_map) # 変換マップ
import random
def raaa(input_str):
# 入力値が13桁固定かをチェック
assert len(input_str) == 13, "input_str must be 13 characters long"
# seedを固定する
seed = 42
random.seed(seed)
result = []
# 各桁の変換ルールに従って変換を行う
for i, char in enumerate(input_str):
if i == 0:
# 1桁目は0か1に変換
result.append(str(random.choice([0, 1])))
elif i == 1:
# 2桁目は0固定
result.append('0')
elif i == 2:
# 3〜4桁の2文字は00〜90
result.append(str(random.randint(0, 9)))
elif i == 3:
result.append(str(random.choice([0, 5])))
elif i == 4 or i == 8 or i == 11:
# 5桁目、8桁目、11桁目は「.」固定
result.append('.')
elif i == 5 or i == 9:
# 6〜7桁、9〜10桁は00〜59
result.append(str(random.randint(0, 5)))
elif i == 6 or i == 10:
result.append(str(random.randint(0, 9)))
elif i == 7 or i == 12:
result.append(str(random.randint(0, 5)))
elif i == 13:
result.append(str(random.randint(0, 9)))
else:
# その他の位置にはそのまま配置
result.append(char)
return ''.join(result)
# テスト
print(raaa("1234.56.78.90")) # 毎回同じ結果が得られる
import random
def raaa(input_str):
# 入力値が13桁固定かをチェック
assert len(input_str) == 13, "input_str must be 13 characters long"
# seedを固定する
seed = 42
random.seed(seed)
result = []
conversion_map = {} # 変換マップを保存する辞書
# 各桁の変換ルールに従って変換を行う
for i, char in enumerate(input_str):
if i == 0:
# 1桁目は0か1に変換
new_char = str(random.choice([0, 1]))
conversion_map[char] = new_char
result.append(new_char)
elif i == 1:
# 2桁目は0固定
new_char = '0'
conversion_map[char] = new_char
result.append(new_char)
elif i == 2:
# 3〜4桁の2文字は00〜90
new_char = str(random.randint(0, 9))
conversion_map[char] = new_char
result.append(new_char)
elif i == 3:
new_char = str(random.choice([0, 5]))
conversion_map[char] = new_char
result.append(new_char)
elif i == 4 or i == 8 or i == 11:
# 5桁目、8桁目、11桁目は「.」固定
new_char = '.'
result.append(new_char)
elif i == 5 or i == 9:
# 6〜7桁、9〜10桁は00〜59
new_char = str(random.randint(0, 5))
conversion_map[char] = new_char
result.append(new_char)
elif i == 6 or i == 10:
new_char = str(random.randint(0, 9))
conversion_map[char] = new_char
result.append(new_char)
elif i == 7 or i == 12:
new_char = str(random.randint(0, 5))
conversion_map[char] = new_char
result.append(new_char)
elif i == 13:
new_char = str(random.randint(0, 9))
conversion_map[char] = new_char
result.append(new_char)
else:
# その他の位置にはそのまま配置
result.append(char)
result_str = ''.join(result)
return result_str, conversion_map
# テスト
output, conversion_map = raaa("1234.56.78.90")
print("Output:", output) # 変換後の出力
print("Conversion Map:", conversion_map) # 変換マップ
コメント