異なるベースで6 * 9を計算する


16

次の結果を出力します(これは、2から36までのベースで6 * 9を計算した結果です)。文字が大文字であることを確認し、乗算自体がすべての行に出力されます。

6 * 9 = 110110
6 * 9 = 2000
6 * 9 = 312
6 * 9 = 204
6 * 9 = 130
6 * 9 = 105
6 * 9 = 66
6 * 9 = 60
6 * 9 = 54
6 * 9 = 4A
6 * 9 = 46
6 * 9 = 42
6 * 9 = 3C
6 * 9 = 39
6 * 9 = 36
6 * 9 = 33
6 * 9 = 30
6 * 9 = 2G
6 * 9 = 2E
6 * 9 = 2C
6 * 9 = 2A
6 * 9 = 28
6 * 9 = 26
6 * 9 = 24
6 * 9 = 22
6 * 9 = 20
6 * 9 = 1Q
6 * 9 = 1P
6 * 9 = 1O
6 * 9 = 1N
6 * 9 = 1M
6 * 9 = 1L
6 * 9 = 1K
6 * 9 = 1J
6 * 9 = 1I

最短のコードが優先されます。


1
@Howard:修正されました。2から10に変更することを検討していましたが、結果の他の何かを修正する際にこの編集を忘れていたため、間違って間違った方法で放置しました。
コンラッドボロウスキ14年

2
Calculate 6*9 in different bases声明は、このように言葉で表現されている理由、なぜ私は、不思議6*9ではなく、単に54?おそらく、本来の意味は、ということでした6し、9小数点としてではなく別の拠点には必ずしも解釈すべきか?これにより、ステートメントがより論理的になり、問題がより興味深いものになります(ただし、ベース10から36まで開始する必要があります)
leonbloy 14年

2
@leonbloy:6および9は1桁の数字です。これらの数字が有効なすべてのベースで同じ意味です。
イルマリカロネン14年

1
@IlmariKaronen:正しいが、6 * 9 = 110110多くの意味がありません...
デニス・

3
これは、ダグラス・アダムスによるギャラクシーシリーズのヒッチハイクガイドへの参照です。シリーズでは、人生、宇宙、そしてすべての究極の質問に対する答えは「42」です。後に、生命、宇宙、すべての究極の質問が「6を9倍すると何が得られるのか?」であることが明らかになりました。注:ダグラスアダムスは、これは意図的ではないと述べました。「ベース13でジョークを書くことはありません」
ジンボブ博士14年

回答:





6

Javascript、57 55バイト

for(i=2;++i<37;)console.log('6 * 9 = '+54..toString(i))

で49に短縮することもできますがalert、それに誰も送信したくありません...


3
出力は大文字である必要があり(54)54.(書き込むために54..toString)に置き換えることができます。
コンラッドボロウスキ14年

2
for(i=1;++i<37;)また、キャラクターを保存します。
GRC

37は無視できますか?エラーが発生して停止します
l4m2

4

ルビー(47)

2.upto(36){|t|puts"9 * 6 = "+54.to_s(t).upcase}

まあ、GolfScriptソリューションの方が優れていることは知っていますが、少なくとも、これは難解ではありません...


2.step{|t|puts"9 * 6 = "+54.to_s(t).upcase}数バイト節約します。エラーで終了しますが、大丈夫です:D
m-chrzan

4

Python、89

B=lambda x:x*'.'and B(x/b)+chr(x%b+7*(x%b>9)+48)
b=2
while b<37:print'6 * 9 =',B(54);b+=1

鮮やかさ。私が完全にPython初心者であることにかなり気付きました:)
ヨアヒム・イサクソン14年

@JoachimIsakssonありがとう...学ぶべきことがたくさんあります。
ブースビー14年

代わりにwhileループを使用して、1文字を削ることができます。b=2<linebreak> while b<37:print'6 * 9 =',B(54);b+=1(* nix改行の単一文字を想定)
ボブ14年

@Bob whileループを試行するたびに、コストがかかりすぎます。それから、私は次回を試すのを忘れます。;)ありがとう!
ブースビー14年

3

Python 2.7(124 114)

編集:以下の@boothbyのコメントのおかげで毛羽立ちを削減

Pythonはベース変換を行うための組み込みの(私が知っている)を持たないので、コードで実行する必要があるので、Pythonは大丈夫だと思います。

for b in range(2,37):print'6 * 9 = '+''.join(chr((54/b**y%b>9)*7+48+54/b**y%b)for y in range(4,-1,-1)).lstrip('0')

私はこれを絶えず思い出すprint'\n'.join(...for x in y)必要がありfor x in y:print...ます。
ブースビー14年

@boothbyありがとう、あなたの提案で更新:)
ヨアヒム・イサクソン14年


1

Mathematica 40

競合していない(小文字が使用されている):

Print["6*9 = ",54~BaseForm~#]&/@2~Range~36

base output


1

ジュリア、61

for b = 2:36; @printf( "6 * 9 =%s \ n"、uppercase(base(b、54))); end

マクロ@printfとprintfを使用することを忘れないでください。

輸入基地; 必要ありません ...


for b=2:36;println("6 * 9 = $(uppercase(base(b,54)))");end...も良いです
cormullion

1

Perl

Math :: BaseCnvモジュールを使用する必要がありました

useステートメントなしの35文字:

map{say"6 * 9 = ",cnv(54,$_)}2..36

次のuse文を含む54文字:

use Math::BaseCnv;
map{say"6 * 9 = ",cnv(54,$_)}2..36

これをどのように採点するかわからないため、両方が含まれています。

マップBLOCK LIST構造が使用されました。リストは、要求された2〜36の範囲です。肉はcnv($NUMBER, $BASE)関数内にあり、マップは暗黙のループです。


1
use文を数えます。最初のものは私のperlでは動作しません。
ブースビー14年

1

J- 78 70

'6 * 9 = ',"1>;/(a.#~48 10 7 26 165#0 1 0 1 0){~<&.>(2+i.35)#.inv&.>54

ハスケル-137

let s=['0'..'9']++['A'..'Z'];t _(0,r)=[s!!r];t b(q,r)=(t b$b q)++[s!!r]in mapM_(putStrLn.("6 * 9 = "++).(\b->t b$b 54).flip divMod)[2..36]


1

C(166 151)

いくつかの不要な文字を取り除き、いくつかの宣言を変更しました。引数なしでプログラムを実行していると仮定します。

p[7],i,l,v,r;main(b){for(r=2;r<37;r++){b++;printf("6 * 9 = ");v=54;while(v>0)l=v%b,p[i++]=l>9?l+55:l+48,v/=b;while(i^0)printf("%c",p[--i]);puts("");}}

1

Clojure、75

(for[i(range 2 37)](println"6 * 9 ="(.toUpperCase(Integer/toString 54 i))))


1

Python 3、83バイト

import numpy;print('\n'.join('6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37)))

1
'\n'.join('6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37))代わりに*['6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37)],sep='\n'を使用して、バイトを保存できます。
小麦ウィザード

それは標準ライブラリではないとして、あなたはおそらく、「numpyのではPython 3」を指定する必要があります
FlipTack

1

ダーツ、75バイト

for(int x=2;x<37;x++)print("6 * 9 = ${54.toRadixString(x).toUpperCase()}");

Dartはstdlibに関しては少し冗長ですが、ちょっと...少なくともあなたはそれを読むことができます:P




0

セージ、48:

恥のセージは小文字で印刷されます...私はハワードよりも1つだけ多いでしょう。または、デビッド・カラハーと間違って結びついていると思います。

for i in[2..36]:print'6 * 9 =',54.str(i).upper()



0

SpecBAS-48バイト

1 FOR i=2 TO 36: ?"6 * 9 = ";BASE$(54,i): NEXT i

SpecBASは実際には変更に対して非常に競争力があります:-)


0

8日、65 62バイト

これは完全なプログラムです。実行後に終了

( "6 * 9 = " . #54 swap base drop >s s:uc . cr ) 2 36 loop bye 

説明

( 
   "6 * 9 = " .   \ Print the first part of the formula
    #54 swap base \ Enter into the base provided by loop index and                
                  \ convert 54 (which is always expressed in base 10)
    drop          \ Get rid of previous base
    >s s:uc       \ Convert number into an upper case string
    . cr          \ Print result and newline
) 2 36 loop       \ Provide base from 2 to 36
bye               \ Quit
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.