プログラミングパズルとコードゴルフ

プログラミング愛好家やコードゴルファーのためのQ&A

13
579085261はCRAZY、725582はGOLF、10757494は…?
あなたの仕事は、以下で説明する方法を使用して、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 …

1
マッカーシーのLISP
マッカーシーの1959 LISP 1959年初頭、ジョン・マッカーシーは、たった9つの原始関数を定義する画期的な論文を書きました。これらの関数は、まとめると、今日のすべてのLISPのような言語の基礎となります。論文はここからデジタル化して入手できます。 http://www-formal.stanford.edu/jmc/recursive.pdf 、機能である:あなたの仕事は完全に1960年論文に記載どおりにマッカーシーのLISPのためのパーサとインタプリタを実装することでQUOTE、ATOM、EQ、CAR、CDR、CONS、COND、LAMBDA、およびLABELすべての機能にする必要があります。答えの正しさを検討する際、このチャレンジテキストよりも論文が優先されますが、以下の9つの機能を要約してみました。言語はすべて大文字であり、エラーチェックは必要ないことに注意してください。すべての入力が有効であると仮定する必要があります。 タイプ McCarthyのLISPには、アトムと、リストまたはアトムである可能性のあるヘッドとして再帰的に定義されるリンクリスト、およびヘッドがアタッチされるリスト(テール)の2つのタイプしかありません。NILは、アトムとリストの両方であるという特別な特性を持っています。 論文によると、原子名は大文字、数字、スペース文字のみで構成されますが、連続するスペースの文字列は1つのスペースと見なされ、先頭と末尾のスペース文字はすべて削除されます。例同等の原子名(スペース文字とアンダースコアに置き換えます): ___ATOM__1__ = ATOM_1。同等でない原子名の例:A_TOM_1 != ATOM_1 リストは括弧で示されNIL、すべてのリストの最後に暗黙が示されます。リストの要素はコンマで区切られており、最新のLispのように空白ではありません。したがって、リスト(ATOM 1, (ATOM 2))はになります{[ATOM 1] -> {[ATOM 2] -> NIL} -> NIL}。 QUOTE: アトム(単一要素)またはリンクリストのいずれかである引数を1つ取ります。引数を正確に返します。 テストケース: (QUOTE, ATOM 1) -> ATOM 1 (QUOTE, (ATOM 1, ATOM 2)) -> (ATOM 1, ATOM 2) ATOM: アトム(単一要素)またはリンクリストのいずれかである引数を1つ取ります。T引数がアトムの場合(true)、または引数がアトムでない場合NIL(false)を返します。 テストケース: (ATOM, (QUOTE, ATOM …

14
モナリザを描きましょう
2014年に、demoscenerヤクブ「Ilmenit」Debskiがリリースさ 250バイト(1)のための手続きのグラフィックデモアタリXLが呼ばモナ。次の絵を描いています(2): タスクは、選択した言語を使用して、まったく同じ画像を生成することです。 (1)内訳:136バイトのデータ+ 114バイトのコード。 (2)元の画像は128x96です。上記のバージョンは256x192に拡大されました。いくつかのピクセルは元のピクセルとは異なりますが、これはこのチャレンジで説明した擬似コードでの予想される出力です。 どうやって? これはcode-golfです。任意の方法を使用する権限がありますが、以下で説明する元のアルゴリズムを使用することで、おそらく最良の結果が得られます。 NB:この段落はありません仕様ではなく、一般的な説明。アルゴリズムの詳細については、擬似コードとリファレンス実装を参照してください。 画像は64の擬似ランダムブラシストロークで構成され(このビデオを参照)、次の色(RRGGBB 16進形式)で循環します。 COLOR = [ 0xFFE289, 0xE99E45, 0xA55A00, 0x000000 ] 背景は最初は4番目の色(黒)で塗りつぶされています。各ストロークは、前のストロークよりも短くなっています。 擬似ランダムジェネレーターは、最初にに設定され0x7EC80000XOR された32ビット整数で線形フィードバックシフトレジスタ(LFSR)を使用してい0x04C11DB7ます。 各ストロークは、シードの最下位バイトを上書きする16ビット値で初期化されます。 BRUSH = [ 0x030A, 0x37BE, 0x2F9B, 0x072B, 0x0E3C, 0xF59B, 0x8A91, 0x1B0B, 0x0EBD, 0x9378, 0xB83E, 0xB05A, 0x70B5, 0x0280, 0xD0B1, 0x9CD2, 0x2093, 0x209C, 0x3D11, 0x26D6, 0xDF19, 0x97F5, 0x90A3, 0xA347, …

21
配列アライメントの追加
前書き 2つの空でない整数配列、たとえばA = [0 3 2 2 8 4]およびB = [7 8 7 2]を考えます。それらに対してアライメントの追加を実行するには、次のようにします。 合計長さlcm(length(A)、length(B))になるように各配列を十分に繰り返します。ここで、lcmは最小公倍数を表します。 A -> [0 3 2 2 8 4][0 3 2 2 8 4] B -> [7 8 7 2][7 8 7 2][7 8 7 2] 繰り返された配列で要素ごとの加算を実行し、いずれかがカットされているすべての位置で結果をカットします。 A -> [0 3 2 2 8 4][0 3 …

22
Natural Pi#0-ロック
ゴール 入力を受け取るプログラム/関数を作成し、整数のランダムなペアが比較的素数であるNかどうかを確認しN、を返しますsqrt(6 * N / #coprime)。 TL; DR これらの課題は、Piを概算するために自然と脳(およびおそらく再利用可能なリソース)のみを必要とするアルゴリズムのシミュレーションです。ゾンビの黙示録中に本当にPiが必要な場合、これらの方法は弾薬を無駄にしません!さらに8つの課題があります。推奨事項を作成するには、サンドボックスの投稿をチェックしてください。 シミュレーション 何をシミュレートしていますか?さて、2つのランダムな整数が比較的素数(すなわち、コプライムまたはgcd == 1)である確率は6/Pi/Piです。それらを数える; gcdが1 かどうかを確認します。繰り返す。これを数回繰り返した後、sqrt(6.0 * total / num_coprimes)に向かう傾向がありPiます。黙示録的な世界で平方根を計算するのが不安になっても心配しないでください!そのためのニュートン法があります。 これをどのようにシミュレートしますか? 入力してください N 次のN時間を実行します。 ランダムな正の整数を均一に生成しi、j と 1 <= i , j <= 10^6 もしgcd(i , j) == 1:result = 1 その他: result = 0 N結果の合計を取り、S 戻る sqrt(6 * N / S) …
39 code-golf  math  random  pi  approximation  popularity-contest  code-golf  sequence  number-theory  binary  coding-theory  code-golf  math  3d  code-golf  code-golf  math  number  code-golf  kolmogorov-complexity  code-golf  ascii-art  graphical-output  binary-tree  code-golf  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  array-manipulation  hexadecimal  code-golf  math  number  set-theory  code-golf  math  arithmetic  number-theory  integer  code-golf  string  kolmogorov-complexity  code-golf  math  sequence  arithmetic  decision-problem  code-golf  code-golf  ascii-art  code-golf  array-manipulation  parsing  code-golf  string  ascii-art  kolmogorov-complexity  code-challenge  code-golf  sequence  code-golf  number  array-manipulation  sorting  code-golf  string  function  code-golf  arithmetic  code-golf  math  sequence  number-theory  primes  restricted-source  javascript  code-challenge  polyglot  rosetta-stone  code-golf  code-golf  regular-expression  code-golf  math  code-golf  math  primes  code-golf  ascii-art  kolmogorov-complexity  binary  code-golf  math  sequence  code-golf  sequence  subsequence  code-golf  string  code-golf  parsing  music  code-golf  grid  game  path-finding  board-game  code-golf  string  binary  code-golf  array-manipulation  balanced-string  code-golf  code-golf  algorithm  code-golf  string  number  arithmetic  array-manipulation  code-golf  array-manipulation  binary-tree  tree-traversal  code-golf  code-golf  tips  code-golf  string  base-conversion  code-golf  tips  s.i.l.o.s  code-golf  string  ascii-art  code-golf  code-challenge  code-golf  game 

29
レディングに乗って、Goをパスしたら$ 200を集める
モノポリーボード このコードゴルフの挑戦のために、ボードゲームMonopolyを構築します。 ルール: 入力なし。 ボードを形成する各ASCII文字が米国版モノポリーボードの各スペースの最初の文字である11x11ボードを出力します。 文字はスペースで区切る必要があります。 Go 右下から開始する必要があります。 生成する正確な文字列は F K C I I B A V W M G N P T N C C S P P S V C S P E L S B J C V C O R I B C M G 右下から左下に向かって正方形が次のようになっていることに注意してください。 …

23
並んだ円、nポイント
n円状に配置されたポイントに対して、明確なポイントのすべてのペアの間に線を引き、次のような結果を生成します。最短コード(バイト単位)が勝ちます!線は透明である必要はありませんが、その方が見栄えが良くなります。出力は、ベクトルグラフィック、または少なくとも600ピクセルx 600ピクセルの画像(ファイルに保存されるか、画面に表示される)でなければなりません。チャレンジを完了するには、少なくとも20を引く必要があります。

30
文字列の分解図
機械やオブジェクトを最小の断片に分解した分解図が好きではありませんか? それを文字列にしましょう! チャレンジ 以下のプログラムまたは関数を作成します 印刷可能なASCII文字のみを含む文字列を入力します。 文字列を非スペースの等しい文字(文字列の「断片」)のグループに分割します。 これらのグループを便利な形式で出力します。グループ間にはセパレータがあります。 たとえば、与えられた文字列 Ah, abracadabra! 出力は次のグループになります。 ! 、 A ああああ bb c d h rr 出力の各グループには、スペースが削除された等しい文字が含まれています。グループ間の区切り文字として改行が使用されています。許可されている形式については、以下をご覧ください。 ルール 入力は、文字列または文字の配列であるべきです。印刷可能なASCII文字(スペースからチルダまでの範囲)のみが含まれます。ご使用の言語でサポートされていない場合は、ASCIIコードを表す数字の形式で入力を取得できます。 入力には少なくとも1つの非スペース文字が含まれると想定できます。 出力は、からなるべき文字(入力がASCIIコードによるものである場合でも)。グループ間には、入力に現れるスペース以外の文字とは異なる明確な区切り文字が必要です。 出力が関数の戻り値を介している場合、配列または文字列、または文字の配列の配列、または同様の構造体である可能性があります。その場合、構造は必要な分離を提供します。 各グループの文字間の区切り文字はオプションです。ある場合、同じルールが適用されます。入力に現れる可能性のあるスペース以外の文字は使用できません。また、グループ間で使用されるのと同じセパレーターであってはなりません。 それ以外は、フォーマットは柔軟です。ここではいくつかの例を示します。 上記のように、グループは改行で区切られた文字列です。 グループは、などの非ASCII文字で区切ることができます ¬。上記の入力の出力は文字列になります。 !¬,¬A¬aaaaa¬bb¬c¬d¬h¬rr グループはn > 1スペースで区切ることができます(nが可変であっても)。各グループ間の文字は1つのスペースで区切られます。 ! , A a a a a a b b c d h r r …
39 code-golf  string 

30
文字列を削除する
多くの言語には、重複を取り除く、またはリストまたは文字列を「重複排除」または「一意化」する組み込みの方法があります。あまり一般的ではないタスクは、文字列を「削除」することです。つまり、表示されるすべての文字について、最初の2つの出現が保持されます。 削除する必要がある文字にラベルが付けられている例を次に示します^。 aaabcbccdbabdcd ^ ^ ^^^ ^^ aabcbcdd あなたの仕事は、まさにこの操作を実装することです。 ルール 入力は単一の、場合によっては空の文字列です。ASCII範囲の小文字のみが含まれていると想定できます。 出力は、文字列に少なくとも2回出現したすべての文字が削除された単一の文字列である必要があります(したがって、左端の2つの出現は保持されます)。 文字列の代わりに、文字のリスト(またはシングルトン文字列)を使用できますが、形式は入力と出力の間で一貫している必要があります。 プログラムまたは関数を作成し、入力を受け取り出力を提供する当社の標準的な方法を使用できます。 任意のプログラミング言語を使用できますが、これらの抜け穴はデフォルトでは禁止されています。 これはcode-golfであるため、バイト単位で測定された最短の有効な回答が勝ちます。 テストケース 行の各ペアは1つのテストケースであり、入力の後に出力が続きます。 xxxxx xx abcabc abcabc abcdabcaba abcdabc abacbadcba abacbdc aaabcbccdbabdcd aabcbcdd リーダーボード この投稿の下部にあるスタックスニペットは、a)言語ごとの最短ソリューションのリストとして、b)全体的なリーダーボードとして、回答からリーダーボードを生成します。 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。 ## Language Name, N bytes N提出物のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば: ## Ruby, <s>104</s> <s>101</s> 96 bytes ヘッダーに複数の数字を含める場合(たとえば、スコアが2つのファイルの合計であるか、インタープリターフラグペナルティーを個別にリストする場合)、実際のスコアがヘッダーの最後の数字であることを確認します。 ## Perl, 43 + 3 (-p …

29
疑似要因
数学の問題や謎に時々現れる奇妙な数字があります。pseudofactorial(N)は、1からNまでの数の最小(つまり最小)公倍数です。つまり、1からNまでのすべての数値を要素として持つ最も低い数値です。 例えばpseudofactorial(7)= 3 * 4 * 5 * 7、これは7と同じです!ただし、2と6は他の用語に含まれているため削除されています。 pseudofactorial(N)を計算するプログラムを作成すると、いつものように、最短のコードが優先されます。 以下は、使用するための短いリストです。A003418の下のOEISで、より多くのテストケースを見つけることができます。 階乗: 1 2 6 24 120 720 5040 疑似要因: 1 2 6 12 60 60 420

15
空を見上げて!それは超大型アレイです!
Code Reviewでライバルの友人から寄せられたこの質問に触発されました。 定義 スーパーアレイは、アレイ内の各新しい要素は、以前のすべての要素の合計よりも大きい配列です。{2, 3, 6, 13}スーパーアレイです 3 > 2 6 > 3 + 2 (5) 13 > 6 + 3 + 2 (11) {2, 3, 5, 11}なぜならスーパーアレイではないからです 3 > 2 5 == 3 + 2 11 > 5 + 3 + 2 大型のアレイは、アレイ内の各新しい要素は、以前のすべての要素の積よりも大きい配列です。{2, 3, 7, 43, 1856}はスーパー配列ですが、それはまた、より大きな配列です 3 > …

30
この整数シーケンスを出力するプログラムを見つけます(Copsのスレッド)
これは警官のスレッドです。強盗のスレッドはここに行きます。 最後の警官のスレッドはすでに4か月前です。 警官の仕事 警官の仕事は、正の(または負でない)整数を受け取り、別の整数を出力/返すプログラム/関数を作成することです。 プログラムがゼロに耐えられない場合、警官はそれを述べなければなりません。 警官は、少なくとも2つのサンプル入力/出力を提供します。 たとえば、フィボナッチ数列を記述することにした場合、答えにこれを記述します。 a(0)は0を返します a(3)は2を返します 例の数は、警官の裁量次第です。 ただし、シーケンスは実際にIntegerSequences®のオンライン百科事典に存在する必要があるため、擬似乱数ジェネレーターはありません。:( 警官は、好きなだけキャラクターを隠すことができます。 たとえば、私のプログラムが次の場合: function a(n) if n>2 then return n else return a(n-1) + a(n-2) end end 次に、これらの文字を必要に応じて非表示にします。 function a(n) if ### then ######## else ###################### end end 強盗の仕事 明らかに元のソースコードを見つけることです。 ただし、同じ出力セットを生成する提案されたソースコードも、OEISで検出されている限り、有効と見なされます。 警官のためのヒント OEISの検索機能は連続した用語に対してのみ機能するため、シーケンスを非表示にする場合は、どこかに穴を空けてください。 どうやらシーケンスを非表示にする方法はありません。シーケンスを選択するとき、これを念頭に置いてください。 スコアは、コードのバイト数です。 勝者は、7日間でクラックされていない最低スコアの提出物になります。 2016年4月に投稿された提出物のみが勝利の対象となります。これより後の投稿は歓迎されますが、勝つことはできません。 勝利を主張するには、完全なコードとOEISシーケンスを明らかにする必要があります(7日後)。 投稿は次のようにフォーマットする必要があります(NNは文字数です): Lua、98バイト …

21
どの行が重要ですか?
次の文字(または改行)のいずれかを指定します。 `1234567890-=~!@#$%^&*()_+qwertyuiop[]\QWERTYUIOP{}|asdfghjkl;'ASDFGHJKL:"zxcvbnm,./ZXCVBNM<>? プログラムは、キーボード上の行を出力する必要があります 私のキーボードは(ほぼ)バッテリー切れなので、コードはできるだけ短くする必要があります プログラムが使用するキーボード(行ルックアップ用)は、次のようになります。 Row 1:~` !1@2 #3$4 %5^6 &7*8 (9)0 _-+= Row 2: Q W E R T Y U I O P {[ }] |\ Row 3: A S D F G H J K L :; "' ↵ return Row 4: Z X C V B …

30
可分性テスト
仕事 2つの厳密に正の整数で指定されたN及びDを入力とし、かどうかを決定nがある割り切れるによってD整数が存在する場合、すなわち、qはそのようなn = qd。 プログラムまたは関数を作成し、入力を受け取り出力を提供する当社の標準的な方法を使用できます。 出力は、真の値または偽の値でなければなりません。nがdで割り切れる場合は真理、そうでない場合は偽。 コードは、すべての符号付き8ビット整数で機能する限り、ネイティブに表現できる整数のみを処理する必要があります。ただし、アルゴリズムは任意の大きな整数に対して機能する必要があります。 任意のプログラミング言語を使用できますが、これらの抜け穴はデフォルトでは禁止されています。 これはcode-golfであるため、バイト単位で測定された最短の有効な回答が勝ちます。 テストケース n, d output 1, 1 truthy 2, 1 truthy 6, 3 truthy 17, 17 truthy 22, 2 truthy 1, 2 falsy 2, 3 falsy 2, 4 falsy 3, 9 falsy 15, 16 falsy リーダーボード この投稿の下部にあるスタックスニペットは、a)言語ごとの最短ソリューションのリストとして、b)全体的なリーダーボードとして、回答からカタログを生成します。 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。 ## Language Name, N …

24
ドットとコンマのタイムマーカーを備えたASCIIクロック
前書き 文字の行が実際には2行であると想像してください。上の行-ドット-は時間(24時間制)を表し、下のコンマ-は分を表します。1文字は、可能な場合はいつでも、時間、分、または両方を表すことができます。 最初はおそらく真夜中から分を時間と分に変換しなければならないでしょう。 結果は、現在の時刻を「ドット形式」で示す文字列です。ドットカウント(アポストロフィはここではドットとしてカウントされ、そう呼ばれます!)は真夜中からの時間カウントであり、コンマカウントは分カウントです。明確にするためにいくつかの例を示します。 (備考)hh:mm- result (時間のみ)05:00- ''''' (数分のみ)00:08- ,,,,,,,, (時間<分)03:07- ;;;,,,, (時間>分)08:02- ;;'''''' (時間=分)07:07- ;;;;;;; (その日の始まり)00:00- (空の結果) 「両方」の文字は最大23回使用できることに注意してください-23:xxの場合、xxは23以上です。 記号 あなたの言語で文字をエスケープする必要がある場合(ルール5を参照)、それを代替の1つに変更できます。上記の選択肢では不十分な場合は、他の記号を使用できますが、合理的なものにしてください。逃げることが障壁になりたくないのです。 ;(セミコロン) -時間と分の両方のマーカー(ALT: :) '(アポストロフィ) -時間のマーカー(ALT: '``°) ,(カンマ) -分間のマーカー(ALT: .) 追加のルール 最小バイト数のコードが勝ちです! 可能な限り両方のシンボルを使用する必要があります。02:04の場合、結果は'',,,,、またにはなりません;',,,。でなければならない;;,, 入力-スクリプト/アプリパラメーター、ユーザー入力(readlineなど)、またはコード 3.1 内の変数を使用できます。コード内の変数を使用する場合、その長さは可能な限り長くする必要があります。それはだ1439、それは次のようになりますので、(午後11時59分)t=1439 「両方」の文字(12:05の12、03:10の3)で象徴される共通部分は、文字列の先頭に配置する必要があります 記号は、コード内でエスケープする必要がある場合にのみ代替に置き換えることができます。 入力は00:00以降の分単位で与えられます。これは負でない整数であると仮定できます。 テストケース Input: 300 Output: ''''' Input: 8 Output: ,,,,,,,, Input: 187 …
39 code-golf  string  clock  time 

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