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

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

1
ディープノートを生成するスクリプトを作成する
THX深いノートは、オーディオ/ビデオ・生産技術で最も有名な音の一つです。作成者によると、最終結果を生成するには約20,000行のCコードが必要でした。それ以上のことができる。 あなたの仕事は、米国特許商標庁が提供するように、THXサウンドの商標の説明に適合するサウンド(ファイルまたはハードウェアに直接)を生成する任意の言語でスクリプトを記述することです。 THXロゴのテーマは、7メジャーにわたる30ボイスで構成されており、200から400 Hzの狭い範囲で始まり、3オクターブを含むあらかじめ選択されたピッチにゆっくりと変化します。30ボイスは、200 Hz〜400 Hzのピッチで始まり、4小節目までに3オクターブにわたる事前に選択されたピッチに到達します。最高音はわずかに離調しますが、最低音2倍の声の数は2倍になります。 「事前に選択されたピッチ」は、実際のTHXディープノートのピッチとほぼ同じである必要があり、Eフラットのキーにあることに注意してください。 どの言語でもそうするための最短のコードが勝ちます。
11 code-golf 

4
ロゼッタストーンチャレンジ:遺伝子マッピング
Rosetta Stone Challengeの目標は、可能な限り多くの言語でソリューションを作成することです。プログラミングの多言語性を自慢しましょう! チャレンジ あなたの課題は、できるだけ多くのプログラミング言語で、クロスオーバー周波数を使用していくつかの遺伝子をマッピングするプログラムを実装することです。これは主に言語のショーケースであるため、言語が持つあらゆる種類の標準ライブラリ関数を使用できます。 「遺伝子マッピング」とは何ですか? 遺伝子マッピングは、染色体上の遺伝子の相対的な位置を特定するプロセスです。これは、ペアが一緒に継承されない子孫の割合に等しい遺伝子のペアの交差頻度を測定することによって行われます。距離はマップ単位で測定され、1つのマップ単位は交差の1%に相当します。たとえば、遺伝子CとDの交差頻度が11%の場合、遺伝子Cは遺伝子Dから11マップユニット離れた距離にあります。 遺伝子のマッピングは、遺伝子の複数のペアを使用して実行され、相対的な順序が決定されます。たとえば、データ(A,B,12) (D,B,7) (A,D,5) (D,H,2) (H,B,9)は次のマップを生成します。 A..H.D......B これB......D.H..Aも有効なマップであることに気付いたかもしれません。これは、ミラーの反対側を区別することができないためです。プログラムは出力するものを選択できます。入力には可能なすべてのペアが含まれるわけではありませんが、マップ全体を再構築するのに十分な情報が常に存在します(したがって、有効な出力が2つを超えることはありません)。さらに、数値は常に(実際の生物学とは異なり)うまくいきます。つまり、のようなものはありません(A,B,3) (B,C,4) (A,C,13)。 入力 入力は数字で始まり、nその後に遺伝子のリスト(大文字)が続きます。その後、n3つのデータが存在します。各セットは、1組の遺伝子とそれらの交差周波数(距離)で構成されます。 3,P,H,I P,H,3 H,I,1 P,I,4 7,A,B,G,Q,U B,Q,4 A,B,10 G,U,13 Q,U,10 A,G,9 G,Q,3 A,Q,6 入力は厳密に定義されていません。これは、異なる言語では実行可能なものに制限があるためです。たとえば、区切り文字をコンマと改行以外に変更できます。入力フォーマットは主にあなた次第です。 出力 出力は、遺伝子マップのレンディションになります。距離が正確に描かれるように、ピリオドで区切られた遺伝子(大文字)で構成されます。上記の例の出力は次のとおりです。 P..HI *or* IH..P BG..Q.....A...U *or* U...A.....Q..GB これも完全に厳格な要件ではありません。たとえば、コンマやスペースなど、ピリオド以外のものを使用できます。 客観的な勝利基準 客観的な勝利基準については、次のとおりです。各言語は、最短のエントリを書くことができる人については個別の競争ですが、全体的な勝者は、これらのサブ競争のほとんどに勝った人になります。これは、多くの一般的でない言語で回答する人が有利になることを意味します。Code-golfは、言語に複数の解決策がある場合の大部分のタイブレーカーです。最短のプログラムを持っている人は、その言語の信用を得ます。 ルール、制限、および注意 あなたのプログラムは2013年12月20日より前に存在した任意の言語で書くことができます。また、私はテストすることができそうにないので、より珍しい/難解な言語で書かれたいくつかの応答を検証するためにコミュニティに頼る必要がありますそれら。 現在のリーダーボード このセクションは定期的に更新され、言語の数とそれぞれの言語のリーダーを示します。 AutoHotkey(632)-Avi dj(579)-ルービック 現在のユーザーランキング Avi(1):AutoHotkey(632) …

1
少なくともN個の有効な番号を得るために、再生する宝くじのチケットを最小限に抑えます
これはかなり複雑ですが、非常に興味深い数学の主題(「問題をカバーする」として知られています)、 そして、それを実装するためにあなたの助けが欲しい。 宝くじゲームを想像してください。各宝くじは、50個の数字(1〜50)から5つの乱数を選択する必要があります。 チケットが当選する確率、または1、2、3、または4個の良い数字を獲得する確率を知るのは非常に簡単です。 また、1、2、3、4個の適切な番号を持つすべてのチケットを「生成」するのは非常に簡単です。 私の質問(およびコードチャレンジ)はこれに関連していますが、少し異なります。 少なくとも 1つのチケットに3つの良い番号が含まれているなど、いくつかの宝くじ(可能な限り少ない数)を購入したい。 チャレンジ 目標は、次のような汎用ソリューションを(プログラムまたは単なる関数として)任意の言語で実装することです。 // Input: 3 prameters min_lottery_tickets(total_numbers_to_choose_from, how_many_numbers_to_choose, how_many_good_numbers_i_want) 上記の例では、以下を呼び出すだけです: min_lottery_tickets(50, 5, 3) プログラムはこの目標を達成するためにプレイするチケットの最小セットを生成します。 例: min_lottery_tickets(10, 5, 2) 次のような7つのチケットを出力します。 1 2 3 4 5 5 6 7 8 9 10 1 2 6 7 10 3 4 8 9 3 4 6 …

9
Stern-Brocotツリーで分数の位置を見つける
スターン- Brocotツリーは、各画分を上記のレベルでそれを隣接する2つの画分の分子と分母を添加することにより取得された画分の二分木です。 それは始まることによって生成される0/1と1/0そうように、一緒にこれらの画分の分子と分母を加えることによって分画の各連続対の間の1つの部分を配置することによって、反復、「エンドポイント画分」として、そこから: 0. 0/1 1/0 1. 0/1 1/1 1/0 2. 0/1 1/2 1/1 2/1 1/0 3. 0/1 1/3 1/2 2/3 1/1 3/2 2/1 3/1 1/0 4. 0/1 1/4 1/3 2/5 1/2 3/5 2/3 3/4 1/1 4/3 3/2 5/3 2/1 5/2 3/1 4/1 1/0 Stern-Brocotツリーの各反復(nth番目の反復)に2^n + 1は、シーケンス内の要素があり、そこから0/2^nに分数を割り当てることができ2^n/2^nます。新しい反復のたびに、連続する分数の各ペアの間に「中間」に1つの分数が挿入されます。 これにより、Stern-Brocotツリーは、正の有理数と0〜1の2進小数との間の1対1マッピングになり、2つのセットのカーディナリティが同じであるという証拠にもなります。 あなたの仕事は、最低項の正の有理数の分子と分母を与えられて、Stern-Brocotツリーにおけるその分数の位置に対応するバイナリ分数を決定するプログラムまたは関数を書くことです。 入力と出力の例を以下に示します。 …

6
演算* 3および/ 2のみを使用して、1を任意の正の整数に変換します
1から開始して一連の演算を適用することにより、正の整数を取得できます。各演算は、「3で乗算」または「2で除算して残りを破棄」します。 例(* 3にfを、/ 2にgを書き込む): 4 = 1 *3 *3 /2 = 1 ffg 6 = 1 ffggf = 1 fffgg 21 = 1 fffgfgfgggf 次の動作を持つプログラムを作成します。 入力:stdin経由またはハードコードされた任意の正の整数。(ハードコーディングされている場合、入力数値はプログラムの長さから除外されます。) 出力:(<input> = 1 <string>例のように)fとgの文字列。このような逆の順序の文字列も受け入れられます。注意:出力にはfとgのみが含まれているか、空です。 勝者は、41が入力である場合にプログラムと出力のバイトが最も少ないエントリです。

2
追加用にスーパーオプティマイザーを実装する
タスクは、ビットの合計の小さな論理式を見つけることができるコードを書くことです。 全体的な課題は、コードが可能な限り最小の命題論理式を見つけて、yバイナリ0/1変数の合計が値xと等しいかどうかを確認することです。変数をx1、x2、x3、x4などと呼びましょう。式は合計と等しくなければなりません。つまり、論理式は、合計がxに等しい場合にのみ真になります。 まず、これを行うための単純な方法を紹介します。y = 15、x = 5と言います。5つの変数を選択する3003の異なる方法をすべて選択し、それぞれの変数のANDと残りの変数の否定のANDを使用して新しい句を作成します。最終的に、それぞれ長さが正確に15の3003句になり、合計コストは45054になります。 あなたの答えは、Pythonに貼り付けることができるような論理的な表現でなければなりません、たとえば、私はそれをテストできます。2人が同じサイズの式を取得した場合、最も高速に実行されるコードが優先されます。 ソリューションに新しい変数を導入できます。したがって、この場合、論理式はyバイナリ変数、xおよびいくつかの新しい変数で構成されます。y変数の合計がxと等しい場合にのみ、式全体が満たされます。 最初の演習として、x = 2に追加するy = 5変数で開始したい人がいるかもしれません。単純な方法では、50のコストがかかります。 コードは2つの値yとxを入力として受け取り、式とそのサイズを出力として出力する必要があります。ソリューションのコストは、出力内の変数の生のカウントにすぎません。したがって(a or b) and (!a or c) 、4としてカウントされます。許可される演算子はand、orとのみnotです。 更新少なくとも理論的には、x = 1のときにこの問題を解決する賢い方法があることがわかりました。

2
ただ一つのメモ-楽器の合成[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックコードゴルフスタックExchange用。 3年前に閉店しました。 ステートメント タスクは、(お好みの)汎用プログラミング言語の機能を使用して、(お好みの)楽器の音(1つのノートを演奏)を合成することです。 2つの目標があります。 結果として生じる音の品質。実際の楽器にできるだけ似ている必要があります。 最小限。コードを1500バイト未満に維持することをお勧めします(基本的なサウンド生成のみがある場合はそれよりも少なくなります)。 生成関数のみを提供する必要があり、定型句はスコアにカウントされません。 残念ながら、音の忠実度についてスコアを計算することはできないため、厳密な規則はありません。 ルール: サンプルライブラリ、特殊な音楽生成物に依存しません。 ネットワークからダウンロードしたり、マイクやオーディオカードのMIDIなど、外部のようなものを使用したりすることはありません。 コードサイズの測定単位はバイトです。ファイルは現在のディレクトリに作成できます。既存のファイル(係数テーブルなど)が存在する場合がありますが、そのコンテンツはスコアに追加され、名前で開く必要があります。 ボイラープレートコード(スコアにカウントされない)は、符号付き整数の配列(リスト)を受け取り、出力のみを処理します。 出力形式は、オプションのWAVヘッダーを使用して、1秒あたり44100サンプルのリトルエンディアン16ビットワードで署名されています。プレーンなwavの代わりに圧縮されたオーディオを出力しようとしません。 合成するために別の楽器を選択してください(または楽器のその他の品質とコードサイズのカテゴリ)。ただし、最初は何をシミュレートしているかを教えてはいけません。他のユーザーにコメントで推測させてください。 電子機器は使用しないでください。 ドラムは楽器です。人間の声は楽器です。 ボイラープレート 一部の言語の定型文を次に示します。あなたの言語にも同様の定型文を書くことができます。「g」関数は、デモ用です(1秒440 Hzのサイントーン)。 C: //#!/usr/bin/tcc -run #include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> /* void g(signed short *array, int* length) { *length = 44100; int i; for(i=0; i<44100; ++i) …

6
Chess960位置発生器
環境 Chess960(またはFischer Random Chess)は、アルゼンチンのブエノスアイレスで1996年6月19日に公に発表された元世界チェスチャンピオンのBobby Fischerによって発明され提唱されたチェスの変形です。標準のチェスと同じボードとピースを使用しています。ただし、プレイヤーのホームランクの駒の開始位置はランダム化されます ルール 標準のチェスのように、白いポーンは2番目のランクに配置されます 残りのすべての白いピースは、最初のランクにランダムに配置されます ビショップは反対色の正方形に配置する必要があります 王はルークの間の広場に置かれなければなりません。 黒のピースは白のピースと等しく反対に配置されます。 From:http : //en.wikipedia.org/wiki/Chess960 回答を投稿したいすべての人々のために... 上記のルールに従って960ポジションのいずれかをランダムに生成できるChess960ポジションジェネレーターを作成する必要があります(960のいずれかを出力できる必要があり、1ポジションをハードコーディングすることは受け入れられません!)白ランク1個を出力します。 出力例: rkrbnnbq どこ: kキング qクイーン bビショップ nナイト ルーク これはコードゴルフになり、タイブレーカーが賛成票になります。

1
指定された数値のリストと算術演算子を使用して数値を生成します
あなたは番号のリスト与えられL = [17, 5, 9, 17, 59, 14]、オペレータのバッグO = {+:7, -:3, *:5, /:1}や数をN = 569。 仕事 L左側のすべての数値を使用Nし、右側の数値のみを使用する方程式を出力します。これが不可能な場合は、Falseを出力します。ソリューション例: 59*(17-5)-9*17+14 = 569 制限と明確化 数字を連結することはできません([13,37]として使用することはできません1337) には自然数とゼロのみが表示されLます。 順序は関係ありLません。 ですべての数字を使用する必要がありますL。 唯一の事業者は+、-、*、/で表示されますO。 O必要以上の演算子を持つことができますが、少なくとも|L|-1演算子 各演算子は、の値まで何度でも使用できますO。 の4つの演算はすべてO、標準の数学演算です。特に、/正確な分数を持つ通常の除算です。 ポイント ポイントが少ないほど良い コードのすべての文字が1ポイントを与えます 読みやすい非ゴルフバージョンを提供する必要があります。 バックグラウンド 同様の質問はスタックオーバーフローに頼まれました。面白いコードゴルフの挑戦かもしれないと思った。 計算の複雑さ ピーターテイラーがコメントで言ったように、これでサブセット和を解くことができます: サブセット合計のインスタンスがあります(したがって、整数のセットSと数値x) L:= S + [0、...、0](| S |回ゼロ)、N:= x、O:= {+:| S | -1、*:| S …

7
多角形の穴の数
問題:接続されたポリゴンの穴の数を数えます。ポリゴンの接続性は、入力三角形分割のすべての三角形が少なくとも1つの辺を別の三角形と共有し、そのような接続された三角形のセットが1つしかないという条件によって保証されます。 入力は、平面内Lのn点のリストと、Tからのエントリを含む3タプルのリストです0...n-1。Tタプル内の各アイテムは、三角形分割の三角形(t_1,t_2,t_3)の3つの頂点(リストからL)を表します。これは、「ポリゴンの三角形分割」の意味での三角形分割であることに注意してください。このため、Tそのオーバーラップに2つの三角形が存在することはありません。追加の規定は、あなたが入力をサニタイズする必要はないだろう、ということであるLとT任意の繰り返しが含まれていません。 例1:もしL = {{0,0},{1,0},{0,1},{1,2}}とT = {{0,1,2},{1,2,3}}、指定した多角形は0の穴数を持っています。 実施例2:場合L = {{0,0},{1,0},{2,0},{2,1},{2,2},{1,2},{0,2},{0,1},{.5,.5},{1.5,.5},{1.5,1.5},{.5,1.5}}とT = {{5,6,11},{5,10,11},{4,5,10},{3,8,10},{2,3,9},{2,8,9},{1,2,8},{0,1,8},{0,8,11},{0,7,11},{6,7,11},{3,4,10}}その後ポリゴン入力が2の出力をもたらすはずです。 タスクがかかる最短プログラム(または関数)を書くことであるLとT穴の数を入力し、リターンなどを。「勝者」は、文字数が最も少ないエントリ(仮の終了日は6月1日)として認識されます。 サンプル入力フォーマット(0のインデックス付けに注意): 0,0 1,0 0,1 1,2 0,1,2 1,2,3

10
出力コードサイズのLorem Ipsum
コードと同じ長さのLorem ipsumを出力します! ルール: コードを出力と同一にすることはできません 圧縮ライブラリなし 2週間で最短のプログラムが勝つ 簡単に(と任意のコードゴルフ問題を解決することができませいずれかでネットワークの使用状況、ファイルの読み込みはなく、他のトリックeval、execなど) 例 Your code with length 25. 出力 Lorem ipsum dolor sit ame

12
「Hello、World!」と入力します
を入力するキーボードイベントを生成するプログラムを作成しますHello, World!。 プラットフォームに依存する必要はありません。 キーを押したままにすることはできません。たとえば、Javaでは、押されたRobot.KeyPress('H');ままHになります。Robot.KeyRelease('H'); プログラムの実行時に、Caps Lockがオフになっていると想定できます。大文字を入力するには、Shiftキーを押しながら文字を押すか、Caps Lockを切り替えます。には!、おそらくshiftメソッドを使用する必要があります。 最短のコードが優先されます。

1
コンパイラを特定する
課題コンパイルできるかどうか、および失敗した場合以外の結果を返す 関数が提供さcompile(s: String): Integerれます(結果のコードは重要ではありません)。0s0 問題は、その関数がどの言語のために作られているのかわからないということです。そのため、関数に小さなコードスニペットを与え、それが返すものを観察することによって、それを理解するのはあなた次第です。良い点は、科学者のチームがあなたの前に試し、リストをC、C ++、C#、Java、JavaScriptに絞り込んだことです(これらは私が考えることができる同様の構文を持つ唯一の普及した言語です)。 ルール 一般的なコードゴルフ規則が適用されます。 厳密な出力形式はありません。読みやすく、理解できるものであれば問題ありません。 これらの5つの言語で十分でない場合は、自分のお気に入りを追加すると、追加の星(★)が与えられます(それは何もしません)。 注1:コンパイラーは、設計対象の言語の最新標準に準拠しています。 注2:私はJavaScriptがコンパイルされないことを知っていますが、いくつかの解析プロセスを通過します。有効なJavaScriptコードであれば、合格します
11 code-golf 

2
アンダーハンドランチャー[閉じた]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックコードゴルフスタックExchange用。 3年前に閉店しました。 あなたの目標は、別の(独立した)プログラムを起動する極秘プログラムを書くことです。答えにペイロードを指定する必要はありません。プログラムが起動する任意のプログラム名を使用できます。 ただし、この動作を秘密にすることが課題です。コードをざっと見てみると、プログラムが実際に外国のプログラムを実行していることに気付くことは不可能または非常に難しいはずです。この「隠された機能」が一度発見されると、意図しないバグとして合理的に説明できる場合のボーナス。そのため、コードはできるだけ明確にする必要があり、すべてがそこに存在するためのアリバイを持っている必要があります。 これは、覚えていないコード・ゴルフ、しかし、人手不足のコンテスト。 コードは明確で読みやすいものでなければなりません。 変更の原因を隠す必要があります。発見されたとしても、悪意よりもバグのように見えるはずです。 ネタバレが最も多い説明を提供してください。 このような 勝者は、最初の有効な回答から10日以内に最高の回答として選択されます。 はい、私はそれが主観的であることを知っていますが、これは手に負えないコンテストにふさわしい唯一の基準です。 投票者は、コードがどれだけ明確で、理由がどれだけ隠されているかなど、標準の「手に負えない」資質を評価する必要があります。 私はコンパイル言語を対象にこの競争を行いましたが、2つの異なる注目すべきインタープリターが見つかった場合、インタープリター言語を使用することもできます。

12
http://i.imgur.com/からランダムな画像を見つける
Imgurは無料の画像ホスティングサービスです。多くの人々がそれを使用しています。imgurリンクの例を次に示します:http : //i.imgur.com/T55muMD.png。ランダム(有効な)imgurリンクを継続的に出力するプログラムを作成します。たとえば、ここに私のプログラムのサンプル出力があります(自分で理解する必要があるいくつかのトリックが含まれているため表示されません): http://i.imgur.com/uFmsA.png http://i.imgur.com/FlpHS.png http://i.imgur.com/eAbsZ.png http://i.imgur.com/lEUsq.png http://i.imgur.com/RuveH.png http://i.imgur.com/BoEwB.png http://i.imgur.com/HVFGQ.png http://i.imgur.com/PZpMg.png http://i.imgur.com/DezCY.png 助けになるヒント: imgurが新しい場合、5文字のリンクが使用されていました。 imgurが新しい場合、数字は使用されませんでした。 これを活用して、文字のみの5文字のリンク画像のみを見つけてください。それが私のプログラムが行うことです。 また、すべての画像はとして保存され.pngます。 要件: 継続的に出力されるランダムなimgurリンク 50が繰り返しなしで出力される場合、リンクは十分に「ランダム」と見なされます アクセスするとき、リンクは画像でなければなりません リンクはで始まり、http://i.imgur.com/で終わる必要があります.png スコアはキャラクターの量です 私はJavaで452文字でそれをしました(ゴルフではTERRIBLE)。ここには示されていませんが、それはあなた自身が理解しなければならないいくつかのトリックが含まれているからです!)
11 code-golf 

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