あなたの仕事は、以下で説明する方法を使用して、103の滑らかな数値を英語の単語に翻訳することです。
どうやって?
- 入力数の素因数のリスト(繰り返しあり)を生成します。
- リストを並べ替える:
- 2が素因数の1つでない場合は、リストを昇順で並べ替えます。
- 2が主要因の1つである場合、リストから2を削除し、残りの要因を降順に並べ替えます。
次の表を使用して、各要素を文字に変換します。
3 = S 13 = L 29 = X 43 = O 61 = Z 79 = H 101 = K 5 = P 17 = Q 31 = N 47 = R 67 = T 83 = V 103 = Y 7 = M 19 = U 37 = C 53 = A 71 = E 89 = D 11 = F 23 = I 41 = W 59 = G 73 = J 97 = B
注:このテーブルは、可能な単語の数を最大化するために経験的に作成されました。好奇心の強い人のために、そのようにエンコードできる2,187語のリストを以下に示します(失礼な言語を含む場合があります)。最適であるとは限りませんが、この課題には十分です。
例
例1:579085261(昇順)
- 素因数は[37、47、53、61、103]です。
- 2は素因数ではないため、リストを昇順で並べ替えます。
- 37 = C、47 = Rなど。出力は「CRAZY」です。
例2:725582(降順)
- 素因数は[2、11、13、43、59]です。
- 2は素因数なので、それを削除し、リストを降順でソートします。これにより
、[59、43、13、11]が得られます。 - 59 = G、43 = Oなど。出力は「GOLF」です。
例3:10757494(繰り返しファクターあり)
- 素因数は[2、11、71、71、97]です。
- 2は素因数なので、それを削除し、リストを降順に並べ替えます。これにより
、[97、71、71、11]が得られます。 - 97 = B、71 = E、11 =F。出力は「BEEF」です。
明確化と規則
- 入力数は、103で滑らかで、最大2で割り切れることが保証されています。
- 定義上、平滑数は正の整数です。
- 入出力は、適切な形式で処理できます。出力は小文字でも大文字でもかまいません。末尾の空白は許容されます。先頭の空白はそうではありません。
- プログラム/関数が大きな入力をサポートできない場合は、回答で指定してください。
- これはコードゴルフであるため、バイト単位の最短回答が優先されます。
テストケース
34874 --> ARM
483254 --> BAR
353722 --> EAR
494302 --> EGG
39061 --> FAT
6479 --> FUN
60421 --> ICE
54166 --> JAM
48911474 --> BETA
2510942 --> BOOM
2303854 --> DOOM
844261 --> FIRE
1606801 --> MAZE
1110085 --> PAGE
5212974 --> BALLS
67892046 --> BEANS
885396199 --> CREEK
67401037 --> FUNKY
27762173 --> QUICK
1238440506 --> ARROWS
33045832681 --> CRAGGY
1362714005 --> PIRATE
137302698 --> TROLLS
358310128062 --> BEGGARS
40255151586 --> DETAILS
164633248153 --> FIXATED
621172442227 --> UNRATED
2467812606 --> VACUUMS
86385078330 --> GROWNUPS
26607531423091 --> UNWORTHY
<=103
...結果は... PIRATE MAZE
またはDOOM VACUUMS
Ò
on を使用する579085261
とキャッシュがヒットし、<s> Emigna </ s> Adnanがすでに起動しているように感じます。