私の友人と私は言葉で遊ぶこのゲームを持っています。それは楽しい娯楽であり、言葉がなくなるまで文字を「キャンセル」することを含みます。私は彼が私よりもはるかに速いことに本当にうんざりしているので、それを実装して私が最終的に彼を倒すのはあなたの仕事です。明らかに、プログラムをできるだけ簡単に隠す必要があるので、できるだけ小さくする必要があります。
このゲームはどのように機能しますか?
ゲームはかなり単純なアルゴリズムです。アルファベット文字列は、それ以上削減できなくなるまで削減され、一種のハッシュになります。私たち人間が行う実際のゲームは実装が非常に困難ですが、次のアルゴリズムに簡略化できます。
まず、アルファベットを半分に折りたたみ、次のように2つの部分を並べます。
a b c d e f g h i j k l m
z y x w v u t s r p q o n
次に、中央から始めて、正の整数を上半分に、負の整数を下に割り当てます。
a b c d e f g h i j k l m
13 12 11 10 9 8 7 6 5 4 3 2 1
z y x w v u t s r p q o n
-13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1
次に、文字列(ここではを使用しますhello world
)を受け取り、アルファベット以外の文字を無視して、翻訳します。
h e l l o w o r l d
6 9 2 2 -2 -10 -2 -5 2 10
次に、文字の値を合計します。前の図で並んでいたもの(例:d
とw
、l
とo
)はキャンセルされますが、その他は合計されます。
sum(6 9 2 2 -2 -10 -2 -5 2 10 )=12
12 b
はの数値なので、のハッシュhello world
はb
完全に相殺される単語(たとえばlove
)の場合、「0文字」を出力します-
。なお、入力で-
は無視されます。これは出力でのみ重要です。
数値の絶対値が13より大きい場合は、a
'と'を2倍にしz
ます。基本的には、数値に 's a
'またはz
''がいくつあっても、最後の文字に残っているものはすべて次のようにします。
code golf: 43.
3に適合しa
、4が残っています。
aaa 4: j
result: aaaj
ヒント:この部分は基本的にはdivmod
ゼロに向かって丸めることを除いて-infinity
(たとえば、-43は3にz
なり、a -4
はp
そうなりますzzzp
)。
注:a
's z
' または's'が完全に適合する場合、ダッシュは表示されません0
。正確に適合する場合のみです。
明確化:
- ハッシュは大文字と小文字を区別します
- 標準の抜け穴は許可されていません
- I / Oは、風変わりではない、stdin、stdout、コマンドライン引数、関数などの任意の形式にすることができます。
- これはコードゴルフなので、バイト単位の最短サイズが優先されます。
例:
hello world --> b
love --> -
this is an example --> aak
hello *&*(&(*&%& world --> b
good bye --> ae
root users --> zzs
love
is empty ...