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

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

1
0から9までの数字を声に出して話す
electronics.SEからのこの質問に触発されて、ここにあなたのための挑戦があります: 既存の音声合成ツールを使用せずに、一連の10進数(0〜9)を取り込んで声に出して話すプログラムまたはサブルーチンを作成します。 入力: 入力数字は、ASCII数字の文字列、整数の配列、BCDでエンコードされた数字など、合理的な形式で提供されるように要求できます。ソリューションが実行可能プログラムである場合、入力をコマンドラインパラメーター、標準入力から読み取る、またはその他の合理的な方法で取得します。 プログラムは、呼び出しごとに少なくとも8桁を話せる必要があります。あなたはあり、それが唯一の数字でない限り、最初の桁は、ゼロではないことを前提としています。 出力: プログラムは、オーディオデバイスを使用して番号を直接話すか、再生可能なサウンドファイルを出力する場合があります。出力ファイルがある場合は、標準のオーディオ形式であるか、生のサンプルデータで構成されている場合があります。生のサンプルデータを出力する場合は、再生に適したパラメーター(サンプルレート、サンプルあたりのビット数、エンディアンネス、符号付き/符号なし、チャンネル数)に注意してください。aplayでサポートされている形式が推奨されます。 数字の読み方の詳細は自由に決めることができますが、出力は、典型的な英語話者が理解できる方法で話された英語の数字で構成する必要があり、リスナーが正確に文字起こしできるように十分明確にする必要があります話されている8桁の乱数。いいえ、ビープ音をn回鳴らすだけではカウントされません。数字の間に一時停止を含めることを忘れないでください。 得点: 標準のコードゴルフスコアリングルールが適用されます。スコアは、コードの長さ(バイト単位)、またはコードがUnicodeテキストで記述されている場合はUnicode文字です。最低スコアが勝ちます。すべての言語が行きます。 Electronics.SEの最初の質問は組み込みプログラミングに関するものであったため、低レベル言語を使用して作成者に骨を投げるのが適切だと感じました。ソリューションがコンパイルされた言語で記述されている場合、スコアとしてバイト単位でコンパイルされた実行可能ファイル。(はい、Java .classファイルなどのプリコンパイルされたバイトコードでも構いません。)このオプションを使用することを選択した場合は、ソースコードと一緒にコンパイル済み実行可能ファイルのコピーを(たとえば、16進ダンプとして)回答に含めてくださいそして、生成に使用したコンパイラのバージョンとオプション。 佳作は、50担当者の恵みとともに、またの基準に適合していることを最初の答えに付与されます元の質問を、すなわち、フラッシュの4キロバイトとSRAMの1キロバイトを埋め込んだMCU上で実行することが可能です。 制限事項: 上記のファイルまたはリソースの長さをスコアの一部としてカウントしない限り、選択した言語の標準ランタイム環境の一部ではないファイルまたはネットワークリソースを使用することはできません。(これは、Webからのオーディオサンプルの読み込みなどを禁止するためです。) 選択した言語の標準ランタイム環境に含まれている場合でも、既存の音声合成ツールやライブラリ、またはオーディオデータのコンパイルを使用することはできません(サイズをスコアの一部としてカウントしない限り)。
15 code-golf  audio 

16
重複のない配列マージ
私は最近、2つの配列をマージし、重複を削除するためのStackOverflowでこのJavascriptコードを見ました: Array.prototype.unique = function() { var a = this.concat(); for(var i=0; i<a.length; ++i) { for(var j=i+1; j<a.length; ++j) { if(a[i] === a[j]) a.splice(j--, 1); } } return a; }; var array1 = ["Vijendra","Singh"]; var array2 = ["Singh", "Shakya"]; var array3 = array1.concat(array2).unique(); このコードは機能しますが、ひどく非効率的です(O(n^2))。あなたの課題は、複雑さの少ないアルゴリズムを作成することです。 勝利の基準は、最も複雑さの少ないソリューションですが、文字の最短の長さによって関係が壊れます。 要件: 「正確さ」に関する次の要件を満たす関数にすべてのコードをまとめてパッケージ化します。 入力:2つの配列 出力:1つの配列 両方の配列の要素を一緒にマージします-いずれかの入力配列の要素はすべて出力配列に含まれている必要があります。 出力された配列には重複がないはずです。 …

12
Tclでのゴルフのヒント
Tclでゴルフをするための一般的なヒントは何ですか?私は、少なくともゴルフの問題をコード化するのに適用できる、Tclに少なくともある程度固有のアイデアを探しています(たとえば、「コメントを削除する」は答えではありません)。回答ごとに1つのヒントを投稿してください。
15 code-golf  tips 

8
チューリングマシンシミュレータ
チューリングマシンシミュレータを作成します。 簡単にするために、ステータスを整数、シンボルをchar、空白シンボルが空白に等しいと想定できます。 現在の状態、入力シンボル、次の状態、出力シンボル、方向(左または右)の形式の5タプル。順序は必須ではありませんが、スワップするかどうかを指定します 不明な状態になったときにマシンを停止する必要があり、他の停止条件は許可されません。 テープは両方向に無限にあり、いつでも空の文字を読むことができます。 入力:初期テープ、初期状態、およびプログラム。好きな形式でどこからでも自由にデータを読むことができます 出力:プログラムの実行後のテープ 必須:シミュレーター上で実行されるサンプルプログラム これはコードコルフなので、最短のコードが優先されます。 今後数時間以内に実装とサンプルプログラムを投稿します。

15
サブセットサム問題のゴルフ
仕事 入力としてスペース区切りの整数のリストを指定すると、各サブセットの合計が0になるこれらの数値の一意の空でないサブセットをすべて出力します。 テストケース 入力: 8 −7 5 −3 −2 出力:-3 -2 5 受賞基準 これはcode-golfなので、バイト単位の最短コードが勝ちです!
15 code-golf  math 

30
偶数または奇数:3人のプレーヤー
片手でプレイする3人用のゲームです。 同時に、各プレーヤーは0〜5本の指を伸ばして手を見せます。 すべてのプレイヤーが同じ種類(偶数または奇数)の数字を示している場合、勝者はいません。しかし、そうでない場合は、異なる種類のプレイヤーが2つの勝ちです。 P l a y e r s A B C Winner Even Even Even No winner Odd Odd Odd No winner Even Odd Odd Player A Odd Even Even Player A Even Odd Even Player B Odd Even Odd Player B Odd Odd Even Player C Even …
15 code-golf  number  game 

2
大小二分法
和音のリス​​トが与えられた場合、それらを「メジャー」または「マイナー」としてラベル付けします。 入力 入力は、スペースで区切られた3つのノートで構成されるコードのリストで、1行に1つです。各音符は、大文字の音符名(A- G)とオプションの臨時記号(#またはb)で構成されます。コードは、任意の反転である場合があります(つまり、ノートは任意の順序である場合があります)。 出力 コードがメジャーの場合、「メジャー」を出力します。コードがマイナーの場合、「マイナー」を出力します。コードがメジャーでもマイナーでもない場合は、空白行を出力します。 例 入力 C E G F Ab C C Eb Gb E G B Db F Ab Bb G D D A Gb 出力 Major Minor Minor Major Minor Major テストスクリプト 過去の質問のいくつかと同様に、JoeyとVenteroが元々作成したいくつかのテストスクリプトをもう一度処理して、この質問のテストケースを提供しました。 バッシュ パワーシェル 使用法: ./test [your program and its arguments] 報酬 仕様を満たしていることが確認でき、テストに合格し、明らかにゴルフの試みを行った各エントリは、私から賛成票を受け取ります(そのため、使用方法を回答してください)。2012年10月13日までの最短のソリューションが勝者として受け入れられます。 ちょっとした理論 …
15 code-golf  music 

20
合計のグリッドを生成する
乱数で満たされた7 x 7のグリッドを生成します。ただし、行番号と列番号が奇数(0から始まる)のセルでは、周囲のセルの合計を使用する必要があります。次に、3 x 3グリッド(太字の二乗和)を使用した小さな例を示します。 2 2 2 2 16 2 2 2 2 次に、7 x 7グリッドの例を示します。 6 5 4 3 7 2 5 6 43 3 50 8 43 8 4 7 8 8 9 3 1 4 36 1 43 6 40 5 3 3 6 1 4 …

13
転置、素数、ああ!
タスクは簡単です。プログラムは整数を入力として読み取り、それが素数であるかどうかを出力します。「yes / no」、「true / false」、または結果を明確に識別するものを印刷できます。 課題は、コードが転置された行と列で動作する必要があることです。 明らかな解決策(コメントを使用して文字ごとに垂直に繰り返される最短の「単純な」解決策)を除外するために、メトリックは通常のcode-golfとは少し異なります。 この課題ではフォーマットが非常に重要であるため、コードサイズはコードが収まる最小の長方形の領域で測定されます。簡単にするために、ソリューションを投稿するときに実際にそれを行う必要があります)。例えば int main() { return 0; } 4 * 13 = 52のサイズになります(そして明らかに、2つの基準のいずれにも適合しません:素数検出と転置可能)。 最小サイズが勝ちます。 関数の唯一の目的が素数の検索、生成、または検出である場合を除き、任意の言語およびライブラリ関数を使用できます。 編集: おそらく勝者はGolfscriptソリューションでしょうが、最高のCまたはC ++ソリューションに対して50ポイントの賞金を授与します!

4
GUIピアノの作成[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 閉じた3年前。 チャレンジ できるだけ少ない文字でGUIキーボードを作成します。 例 これは私のコースの1つの課題であったため、ソースコードを表示できません。ただし、ここに私のキーボードのスクリーンショットがあります。 この例では、キーはタイプでJButtonあり、Midi Synthesizerを使用してサウンドを生成しました(デフォルトのADSRエンベロープ値を使用)。 ルール あなたは許可されている標準の外部ライブラリを使用します。 サウンドで創造的になります。8ビット、シタールなどを使用できます。 簡単にするために、5つのキーがある場合があります。白黒、CからE(キーボードの最初の5つのキー)。 最も重要なことは...あなたの仕事を紹介することです! 注意:使用する言語の選択によっては、これはかなり大きな作業になる場合があります。 これはSE Code Golfに関する私の最初の質問です。不明な点がある場合は、詳細をお問い合わせください。 編集:このチャレンジの期日は9/22/12になります。この日付の後に回答を投稿した場合、私は関係なくそれを調べます(そしておそらくそれを+1します)。
15 code-golf  music 

3
自己一致正規表現[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 2年前に閉店。 自分自身と一致する重要な正規表現を記述します。 たとえば#.*$、Pythonの文字列外のコメントは行末まで一致し、perlの正規表現構文でも一致します。 ルール: 正規表現は、有用または実用的な何かを行う必要があります。 使用している正規表現構文を教えてください(perlやPOSIXなど)。 勝者は、最高の投票に準拠した回答です。 クリエイティブに!

4
YMCAに滞在するのは楽しいです
「YMCA」は、Village Peopleによる有名なディスコソングで、よく知られたダンスを持っています。曲のコーラスに同期した大文字の「Y」、「M」、「C」、「A」を出力する最短のプログラムを作成します。 通常、標準出力に送信される各行には1文字が入ります。これは主に、C標準ライブラリの出力バッファリングの対象となるプログラムを簡素化するためです(改行を出力すると出力バッファがフラッシュされます)。 音楽と同時に開始されるプログラムは、開始後これらの各時間の0.125秒以内に文字「Y」を出力する必要があります(秒単位。YouTubeに投稿されたミュージックビデオから決定します)。 45.766 49.611 60.889 64.661 109.816 113.591 124.810 128.687 173.830 177.620 188.950 192.724 204.013 207.739 219.057 文字「M」、「C」、および「A」は、各「Y」の後にそれぞれ0.930秒、1.395秒、および1.628秒が続きます。テストのために、これらの相対時間は、先行する「Y」の時間に加算することにより絶対時間に変換されます。 私はテストプログラムとそれに対応するサンプルプログラムをCで書きました。各文字の後に改行が続くと想定しています(ただし、これは競合の規則ではありません)。Linux用に書かれており、Cygwinを使用しないとWindowsで動作しません。テストプログラムを使用して提出物をテストできない場合は、少なくともYouTubeビデオに対して提出物を確認してください。 提出が適切に動作するために特別なコマンドラインオプションを必要とする場合、スコアの計算時にそのコマンドラインオプションがカウントされます。ただし、インタープリターの起動時間は考慮されないため、必要に応じてテストプログラムを変更して対応することができます。 存在するかどうかは疑問ですが、このタスク専用に設計されたプログラミング言語関数またはライブラリの使用は禁止されていると言わざるを得ません。
15 code-golf  music 

5
BrainF ***で最速のソート
BrainF ***でQuickSortを実装した後、おそらくそれほど速くないことに気付きました。通常の言語でO(1)である操作(配列のインデックス付けなど)は、BFでは大幅に長くなります。チューリングターピットでコーディングしている場合、効率的な並べ替えを行うルールのほとんどは、ウィンドウから除外できます。 そのため、「Fastest BrainF *** Sort Routine Ever」を実装するための課題があります。以下のインタプリタを使用して、すべてのエントリの時間を計ります。インタプリタは、符号なし文字の16Kテープを使用します。テープとセルの両方は、制限を超えて前進/増分するとラップします。EOFを読み取ると、現在のセルに0が設定されます。測定時間には、ソースファイルの解析時間とすべての入力ファイルの処理時間の両方が含まれます。最も速いコードが勝ちます。 テストベクトルは、次のようなエッジケースのソートをテストするために設計されたAsciiファイルのセットになります。 すでにソートされたリスト:「ordered」 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 逆ソートリスト:「逆」 ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! いくつかの一意の値の多くのコピーで構成されるファイル:「onlynine」 ibbkninbkrauickabcufrfckbfikfbbakninfaafafbikuccbariauaibiraacbfkfnbbibknkbfankbbunfruarrnrrrbrniaanfbruiicbuiniakuuiubbknanncbuanbcbcfifuiffbcbckikkfcufkkbbakankffikkkbnfnbncbacbfnaauurfrncuckkrfnufkribnfbcfbkbcrkriukncfrcnuirccbbcuaaifiannarcrnfrbarbiuk 完全にランダムなASCIIファイル:「ランダム」 'fQ`0R0gssT)70O>tP[2{9' 0.HMyTjW7-!SyJQ3]gsccR'UDrnOEK~ca 'KnqrgA3i4dRR8g.'JbjR;D67sVOPllHe,&VG"HDY_'Wi"ra?n.5nWrQ6Mac;&}~T_AepeUk{:Fwl%0`FI8#h]J/Cty-;qluRwk|S U$^|mI|D0\^- csLp~`VM;cPgIT\m\(jOdRQu#a,aGI?TeyY^*"][E-/S"KdWEQ,P<)$:e[_.`V0:fpI zL"GMhao$C4?*x 範囲1..255を超えるランダムファイル: "wholerange" öè—@œ™S±ü¼ÓuǯŠf΀n‚ZÊ,ˆÖÄCítÚDý^öhfF†¬I÷xxÖ÷GààuÈ©ÈÑdàu.y×€ôã…ìcÑ–:*‰˜IP¥©9Ä¢¬]Š\3*\®ªZP!YFõ®ÊÖžáîÓ¹PŸ—wNì/S=Ìœ'g°Ì²¬½ÕQ¹ÀpbWÓ³ »y »ïløó„9k–ƒ~ÕfnšÂt|Srvì^%ÛÀâû¯WWDs‰sç2e£+PÆ@½ã”^$f˜¦Kí•òâ¨÷ žøÇÖ¼$NƒRMÉE‹G´QO¨©l¬k¦Ó 各入力ファイルは最大で255バイトです。 こちらが通訳です。これは、コンソールモードのWindows用に書かれていますが、ポートに簡単にする必要があります:ちょうど置き換えるread_time()とsysTime_to_ms()、プラットフォーム固有の同等物。 使用法: bftime program.bf infile1 [infile2 ...] #include <windows.h> #include <stdio.h> #define MS_PER_SEC 1000.0f #define MAXSIZE (0x4000) #define MAXMASK (MAXSIZE-1) typedef …

12
バイナリからネガバイナリに変換
入力として0と1111111111111111(つまり16ビットの符号なし整数)の間に含まれるバイナリ整数が与えられた場合、同じ整数をネガバイナリに出力します。 入力は、言語に最も適した形式であれば何でもかまいません。たとえば、プログラムが16桁の入力を簡単に処理する0000000000000101よりも16桁で処理する方が簡単な場合は、101その方法で入力を受け入れるようにプログラムを作成できます。 サンプルI / O > 1 1 > 10 110 > 1010 11110 > 110111001111000 11011001110001000 > 1001001 1011001 以下は、負および非整数のベースを含むベース変換を行うサンプルプログラムです。これを使用して作業を確認できます。

25
piを5桁まで計算します
これは、http://programmers.blogoverflow.com/2012/08/20-controversial-programming-opinions/からのものです。 「Piは4 *(1 – 1/3 + 1/5 – 1/7 +…)の関数を使用して推定できるため、より多くの用語で精度が高くなるため、Piを小数点以下5桁の精度で計算する関数を記述します。 」 上記のシーケンスを計算して、推定を行う必要があることに注意してください。
15 code-golf  pi 

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