教授の基本建物番号コンバータ


12

ナッツの数学の教授は、競合他社の中で最もやさしいものでもフォックスできるシステムを使用して、すべての研究をエンコードしたいと考えています!

この目的のために、教授は、自分が書いている数字だけでなく、数字が存在する場所に応じて、数字のすべての数字の基数を変更することを決定しました(1から始まる右からカウント)。例えば:

数値0には1桁があるため、基数1で表されます:0

数字の1は10進数で1桁ですが、教授のシステムでは無効です。最初の場所は、基数1桁のみに予約されています!つまり、ベース2が許可されている2番目の場所にバンプする必要があります。10

番号2は、少なくとも3を記述する必要があります:100

しかし、2番目の桁を変更することで、3という数字を書くことができます:110

および4として:200

以下に、アイデアを得るのに役立つ例をいくつか示します。

5:210

6:1000

7:1010

8:1100

9:1110

10:1200

11:1210

12:2000

13:2010

14:2100

15:2110

16:2200

17:2210

18:3000

このシステムを使用すると、教授のメモは彼ら以外の誰にも意味がなく、最終的に世界を引き継ぐことができます!!!! 夜はよく眠ります。

もちろん、エンコード方法はできるだけ曖昧にする必要があります。


あなたの仕事は、10個のコードスニペットを書くことです

0 1 2 3 4 5 6 7 8 9

変換される数字の順序で結合すると、教授の悪魔的な番号付けシステムで書かれた数字が生成されます(出力方法は選択できますが、0-9の数字のみを使用した人間が読める数字でなければなりません)

たとえば、スニペットが次の場合:

0 = MONKEY 1 = EXAMPLE、2 = CODE、3 = GOLF、9 = TEST

それから

19 = EXAMPLETEST-> 3010

20 =コードモンキー-> 3100

21 = CODEEXAMPLE-> 3110

22 =コードコード-> 3200

23 =コードゴルフ-> 3210

10桁を超える入力番号や負の数を考慮する必要はありませんが、追加の桁のコードを記述したい場合は、追加の称賛を得ます。これはコードゴルフであるため、最短回答(すべてのスニペットの合計バイト数を使用)が勝ち、標準の抜け穴は許可されません。

補遺:0が基数1の0の正しい表現であるかどうかについてだれかが始める前に、この教授はナッツだということを思い出したいと思います。それと一緒に暮らす。


1
注:教授のシステムは、階乗数システムとも呼ばれます
ETHproductions 16


@ETHproductions教授のエンコードが良いとは言いませんでした。
ジョーBloggs 16

@KritixiLithosありがとうございます!私は確認として使用することを探していました。
ジョーBloggs 16

4
ちなみにPPCGへようこそ:-)
ETHproductions

回答:


1

Mathematica(REPL環境)、合計858バイト

以下は、9桁目の86バイトのコードスニペットです。

1;ValueQ@a||(a=0;b=3);a=10a+9;b++;FromDigits[a~IntegerDigits~MixedRadix@Range[b,1,-1]]

1から8までの数字のコードスニペットは同じですが、9が適切な数字に置き換えられています。数字0のコードスニペットは同一ですが、+9単に削除される。

a~IntegerDigits~MixedRadix@Range[b,1,-1]少なくとも桁数とa同じである限り、の階乗数システムの桁のリストを計算しbます。FromDigits出力のために、その数字のリストを通常の10進整数に変換します。(リスト要素のいずれかが9を超えると、何か面白いことが起こります。)

MathematicaのREPL環境では、計算をセミコロンで終了して出力を抑制することができます。そのため、セミコロンで区切られたチェーンの最後の出力のみが表示されます。aスニペットで指定された整数、およびb必要な階乗システムの桁数の境界を再帰的に定義します。ValueQ@a||(a=0;b=3)これらの変数が初期化されていない場合(つまり、最初のスニペットで)、コマンドはこれらの変数を初期化し、それ以外の場合はそのままにします。その後a=10a+9;b++、再帰を実行します。最後に、イニシャル1;はスニペットを接着するためのものです:中間の計算に1を乗算します(とにかく表示されません)。


私はセミコロンの乱用を楽しんでいます。
ジョーBloggs

0

ゴルビー、790 810 980

基本的にどのシェルでも、改行( "\ n")なしでキャリッジリターン( "\ r")を印刷すると、以前に印刷された行が上書きされ、最終的に最後のビットのみが印刷される(つまり、最終結果)が表示されます。

これは、シェルなどで実行する必要がありますruby name_of_file.rb

無制限の長さの正数に対して機能します。

コードは、以下のスニペットの10個のコピーで、スニペットXごとに1つずつ、0から9の数字に置き換えられています(上部)。

->*t{n,d,o="X#{t}".toi,0,''
dw{n,r=n.dm d+=1;o.pr r.ts;n>0}
$>.fu
pr"\r",o
o}

つまり、(たとえば)8を表すスニペットは次のようになります。

->*t{n,d,o="8#{t}".toi,0,''
dw{n,r=n.dm d+=1;o.pr r.ts;n>0}
$>.fu
pr"\r",o
o}

チャレンジでは、スニペットを作成して複数桁の数字を表すために「結合」する必要があるため、数字に数字を追加するには、単に数字の末尾の角括弧に入れます。したがって、103(10進数)は次のようになります。

->*t{n,d,o="1#{t}".toi,0,''
dw{n,r=n.dm d+=1;o.pr r.ts;n>0}
$>.fu
pr"\r",o
o}[->*t{n,d,o="0#{t}".toi,0,''
dw{n,r=n.dm d+=1;o.pr r.ts;n>0}
$>.fu
pr"\r",o
o}[->*t{n,d,o="8#{t}".toi,0,''
dw{n,r=n.dm d+=1;o.pr r.ts;n>0}
$>.fu
pr"\r",o
o}[]]]

108を意味します。
user7520018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.