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

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

4
マウスポインターの軌跡を表示します…未来の!
d3jsを使用するこの例に触発されて、マウスポインターの軌跡が表示されるキャンバス(または選択言語に相当するもの)の作成に挑戦します。 ツイスト あなたは、マウスポインタがどこのトレイル表示すべきではありませんでしたが、それはどこの「トレイル」になる未来にある(かもしれない)を。 次のいずれかを使用して実行できます。 タイムマシン、または 以前のマウスの動きに基づいた確率的推定 仮定 タイムマシンの実装を選択しなかった場合、マウスがしきい値ミリ秒を超えて移動しないと、軌跡を表示できません。(しきい値はユーザーが選択できます)。 カーソル画像はあなた次第であり、OSのカーソルと同じである必要はありません(単純な小さな円や点を描くこともできます)。 邪悪な入力はテストされません。動きがスムーズであると想定できます。この場合の「スムーズ」の定義は次のとおりです。マウスの動きがキャンバスのx軸とy軸上の関数である場合、それは連続関数になります。 勝ち コード内の最小文字数で有効な答えが勝ちます。同点の場合-最初に投稿されたものが勝ちます。 編集:ほとんどの賛成票で有効な答えが勝ちます。同点の場合-最初に投稿されたものが勝ちます。実装を作成することも、予測を正確に行うこともできます。私はもう裁判官ではありません、私たちはすべてです:) 有効な答えには、オンラインツールまたは自由にダウンロード可能なコンパイラ/インタープリター/ランタイム/などのいずれかで(テスト!テストを意味する)で遊ぶ方法が含まれている必要があります。

1
「Twinkle Twinkle Little Star」の歌詞を印刷します
あなたの目標は、各ノートが演奏されるときに曲「Twinkle Twinkle Little Star」の歌詞を印刷することです。 コンピューターのマイクにメモが聞こえます。ノートのピッチ(ただし、必ずしも長さではない)が正しい場合は、適切な音節を出力します。それ以外の場合は、何もしません。各音符の長さは少なくとも0.5秒で、音符の間には少なくとも1/4の区切りがあります。 ここで提供される音符と次の歌詞を使用します(縦線は音節の区切りを表します)。 Twin | kle、twin | kle、lit | tle star、 私はあなたが何であるかをどのように判断しましたか。 世界を非常に上に、 空のひし形のように。 Twin | kle、twin | kle、lit | tle star、 私はあなたが何であるかをどのように判断しましたか。 ここで音楽の録音を見つけることができます。 例 コンピューターは中央のCを聞いて「Twin」を印刷します 別のミドルCが聞こえ、「足首」が印刷されます。 次に、別の中央のC(間違った音)が聞こえ、何もしません。 次に、中央のCの上のGが聞こえ、「ツイン」などが出力されます。 ルール 句読点は示されているとおりでなければなりません。 間隔は、示されているとおりである必要があります(スペースと改行を含む)。 空白は、前の音節または次の音節とともに出力されます。
24 code-golf  music  audio 

5
{0、3、2、5、0、3、5、1、4、6、2、4}の最短表現
与えられた整数のリスト{0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4}。これらの数字に興味がある人のために平日の計算に使用されます。 Weekday = (m[n] + d + y + y>>2 + y/400 - y/100) % 7;、m[n]where-検索する式、-day dof month、y- year - (month <= 2)。 算術演算子、論理演算子、ビット単位演算子で構成される式を作成します。これらの演算子は、リストのn番目の数値に等しくnなるmように正の整数を出力しm % 7ます。 分岐、三項演算子、テーブル検索、およびポインターは許可されていません。 スコア: 1- | & ^ ~ >> <<オペレーター 1.1- + - < …

3
画面を王のタイルで埋める
次の13の正方形の王のタイルが飛行機を非周期的に並べることが証明されました。つまり、正方形が隣接するすべての辺が同じ色のグリッドに配置されている場合、パターンの変換はそれ自体と一致しません。 各タイルをテキストで3×3グリッドで表し、中央と隅にスペースを入れ、エッジにある赤、緑、青、黄、グレーの代わりに1〜5の数字を使用します。 2 2 2 1 1 1 4 3 2 2 4 3 2 1 2 1 3 2 3 2 1 3 1 3 2 4 4 4 4 4 5 4 5 5 5 5 5 5 4 3 2 3 2 3 2 1 2 1 …

24
最短Minmod関数
minmod関数は馴染みの変異体である分の偏微分方程式の傾きを制限する高解像度スキームに表示され、。多数の斜面が与えられると、斜面間の相対的な兆候に注意しながら、最も平坦な斜面を選び出します。 この関数は、任意の数のパラメーターを取ります。次に、minmod(x 1、x 2、...、x n)は次のように定義されます。 min(x 1、x 2、...、x n)、すべてのx iが厳密に正の場合 max(x 1、x 2、...、x n)、すべてのx iが厳密に負の場合 それ以外の場合は0。 整数入力のみを考慮します。これは実装に実際には影響せず、一部の(難解な)言語ではより包括的である必要があるためです。 STDIN、ARGV、または関数引数(可変引数関数よりも便利な場合は配列を使用できます)を介してn 個の符号付き整数(n> 0の場合)を取り、結果を返すか(STDOUTに)出力するプログラムまたは関数を作成しますminmod(A、B)。 組み込みのminまたはmax関数を使用してはなりません(実際にそれを見つけることができる場合は、組み込みのminmodも使用しないでください)。また、組み込みの並べ替え関数を使用しないでください。ただし、少数固定アイテム(5未満)。 言語に符号付きの型がない場合は、符号なしの型を使用して、2の補数として解釈できます。例えばあなたの言語のみ符号なしバイトを使用している場合、あなたが使用できる255ために立つこと-1と128のために立つこと-128など、 これはコードゴルフなので、最短の回答(バイト単位)が勝ちです。 テストケース Input Output 2 2 -3 -3 0 0 3 -5 0 2 4 1 1 0 1 2 0 -1 1 2 0 -4 -2 -3 …

9
チェストーナメント
これは、単純化されたルールを持つチェスKOTHです(チェス自体は既に複雑であるため、単純なプログラムでプレイしても簡単にはなりません)。現時点ではjava(バージョン8)に限定されていますが、ラッパークラスの作成はそれほど難しくありません(誰かがこれを行いたい場合)。 チェス盤 制御プログラムのチェス盤は、ICCF数値表記の修正バージョンを使用します。これはゼロベースです。つまり、左下のフィールドはposition 0,0であり、右上のフィールドはposition 7,7です。 変更されたルール 入場者は無視されます。 キャスリングはできません。 50手ルールは、(引き分けで試合終了を意味する)に自動的に適用されます。 クイーンへのポーンのプロモーションは、ボードの終わりに達すると自動的に行われます。 プレイヤーが移動するのに2秒以上かかる場合、ゲームに負けます。 無効な動きを返すと、ゲームに負けます。 勝つためには、敵の王を捕獲する必要があります。敵をチェックメイトするだけでは不十分です。 これにより、敵を捕まえることができるフィールドに王を移動させることもできます。 白がゲームを開始します。 白はフィールドの「下部」に配置され(y = 0)、黒は上部に配置されます(y = 7)。 ボット以外のリソース(インターネット、ファイル、他のボットなど)へのアクセスは禁止されています。 得点 勝つと3ポイント、引き分け1ポイント、0ポイントを失います。 各サブミッションは、他のサブミッションと10回対戦します(白で5回、黒で5回)。 コントローラ 制御プログラムはgithubで見つけることができます。 参加するには、playerパッケージ内にクラスを作成する必要があり、そのサブクラスである必要がありPlayerます。例として、 TestPlayerを見てください(これもスコアに含まれます)。 各ゲームで、コントローラーはプレーヤーの新しいインスタンスを作成します。その後、ターンごとに移動を返す必要があります。コントローラは、フィールドの 8x8配列を含むボードのコピーを提供します。フィールドには、その色、位置、および存在する場合はその部分に関する情報が含まれます。 コントローラはまた、のような、敵の選手についての情報を提供しますと。敵を呼び出すと失格になります。isCheckgetPieces()getMove() スコアボード 01)AlphaBetaPV:229 02)AlphaBeta:218 03)PieceTaker:173 04)チーズ:115 05)ThreeMoveMonte:114 06)StretchPlayer:93 07)DontThinkAhead:81 08)SimplePlayer:27 09)TestPlayer:13 コンテストは、コントローラーによって提供されるメソッドから利益を得ることができるため、回答の作成が容易になるため、Javaに限定されています。ただし、誰かがラッパーを作成する場合は、他の言語を含めます。

4
4日はあなたと共にありますように!
スターウォーズの日を記念して、次のテキストを表示するプログラムを作成し、スターウォーズのオープニングクロールのようにスクロールします。 It is a period of civil war. Rebel spaceships, striking from a hidden base, have won their first victory against the evil Galactic Empire. During the battle, Rebel spies managed to steal secret plans to the Empire's ultimate weapon, the Death Star, an armored space station with enough power …

15
文字列のスクラブルスコアと有効性を決定する
あなたの仕事は、与えられた文字列が適切な長さであり、スクラブルタイルで表現できるかどうかを判断し、そうであれば、各文字のスコアの合計を出力することです。 Scrabble:のプレイ方法がわからない場合は、A〜Zのさまざまな文字が印刷された100個のタイルと、任意の文字を表す2つのワイルドカードがあります。各文字には一定数のポイントがあり、各タイル(必ずしも単語ではない)は1回しか使用できません。単語が再生されると、使用される各タイルのポイント値が合計され、それがスコアになります。限られた数の文字が利用可能であるため、単語に特定の文字を含めることができるのは、その文字にタイル+未使用のワイルドカードが含まれている場合だけです。スクラブルボードは15×15セルなので、単語は2〜15文字でなければなりません。 英語版での各文字の量とスコアのリストについては、下記を参照してくださいまたはhttp://boardgames.about.com/od/scrabble/a/tile_distribute.htm(アーカイブ)。 手紙の数量ポイント手紙の数量ポイント ------------------- ------------------- A 9 1 O 8 1 B 2 3 P 2 3 C 2 3 Q 1 10 D 4 2 R 6 1 E 12 1 S 4 1 F 2 4 T 6 1 G 3 2 U 4 1 H 2 …

7
モールスデコードゴルフ
私はスペースに対する憎しみの高まりに不安になりました。この答えは、この暗示的な空白の除去からモールス信号が安全であることを確認するきっかけとなりました。 したがって、あなたの仕事は、モールス信号をすべてのスペースを削除して正常に翻訳できるプログラムを作成することです。 ルール: 入力は、ダッシュとドット(ASCII 2Dおよび2E)のみで構成される文字列になります。他の文字を含む入力の出力は未定義です。入力(stdin、テキストファイル、プロンプトユーザーなど)を受け取るために、選択した言語に都合のよい方法を自由に使用してください。モールス信号入力はA〜Zの文字のみで構成され、一致する数字や句読点は必要ないと想定できます。 出力には、この辞書ファイルに含まれる単語のみが含まれている必要があります(ここでも、辞書ファイルにアクセスするための便利な方法を自由に使用してください)。有効なデコードはすべて標準出力に出力する必要があり、入力内のすべてのドットとダッシュを使用する必要があります。出力内の一致した各単語はスペースで区切る必要があり、可能なデコードはそれぞれ改行で区切る必要があります。大文字、小文字、または大文字と小文字が混在する出力を便利に使用できます。 上記の1つの例外を除き、標準の抜け穴に対するすべての制限が適用されます。本当に必要な場合は、インターネット接続経由で要件2で参照されている辞書ファイルにアクセスできます。URLの短縮は許容されますが、goo.gl / 46I35Zが最短になると思われます。 これはコードゴルフで、最短のコードが勝ちます。 注: Pastebinに辞書ファイルを投稿すると、すべての行末がWindowsスタイル0A 0Eシーケンスに変更されました。プログラムは、0Aのみ、0Eのみ、または0A 0Eの行末を想定できます。 テストケース: 入力: ......-...-..---.-----.-..-...- .. 出力には以下を含める必要があります。 こんにちは世界 入力: .--..-.-----..-..-----..-.--..--...---..--...-.... ...--....-.-.----...--..---.-....-。 出力には以下を含める必要があります。 プログラミングパズルとコードゴルフ 入力: -.....--....-..-......--....-.---..---...-.----..-.- --..---.--....---...-..-.-......-...---....---..-- ---。 出力には以下を含める必要があります。 速い茶色のキツネが怠zyな犬を飛び越える
24 code-golf  morse 

4
Cで2つの数字を安全に追加します
Cは素敵で安全な高レベルのプログラミング言語であることは誰もが知っています。ただし、コーダーとして次のタスクを設定します。 2つの数値を追加するプログラムを作成します。 入力:スペースで区切られた2つの整数。 出力:入力内の2つの数値の合計。 ひねりは、コードが100%安全でなければならないということです。言い換えれば、入力が何であっても適切に動作する必要があります。入力が実際に2つのスペースで区切られた整数で、両方とも100桁未満の場合、合計を出力する必要があります。それ以外の場合は、エラーメッセージを出力して安全に終了する必要があります。 結局のところどれほど難しいのでしょうか? 一般的な称賛は、他の人の答えを破る病理学的入力ケースに与えられます:) コードは、ubuntuでgcc -Wall -Wextraを使用して警告なしでコンパイルする必要があります。 明確化。 入力は標準入力からです。 水平方向の空白は単一のスペース文字のみです。最初の数字の前に何もなければならず、入力は改行+ EOFまたはEOFのみで終了する必要があります。 Augmented Backus-Naur Formで指定される唯一の有効な入力は次のとおりです。 NONZERODIGIT = "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9" POSITIVENUMBER = NONZERODIGIT * 98DIGIT NEGATIVENUMBER = "-" POSITIVENUMBER NUMBER = NEGATIVENUMBER / POSITIVENUMBER …
24 code-golf  c 

30
リストからオックスフォードコンマを使用して単一の文字列を生成する
文字列のリストを取得し、リストから構築された単一の適切に句読点付きの文字列を返し、各要素を引用する、いくつかの巧妙な(簡潔で慣用的な)アプローチは何ですか? 一方、これは私のために来たのGroovyを試して、私あまりにもリテラルが、説明の解決策があるため、 def temp = things.collect({"\'${it}\'"}) switch (things.size()) { case 1: result = temp[0] break case 2: result = temp.join(" and ") break default: result = temp.take(temp.size()-1).join(", ") + ", and " + temp[-1] break } すなわち、['1']得られるはず'1'、['1','2']得られるはず'1 and 2'、と[私は?そこに何をしたか見る] ['1','2','3']得なければなりません'1, 2, and 3'。 Groovyには良い答えがありますが、他の言語で何ができるかを知りたいです。 これらの言語の機能とイディオムを利用するさまざまな言語のコンパクトな巧妙なアプローチは何ですか?

21
最後に日付がnで割り切れたのはいつですか?
日付は、YYYYMMDDなどの符号なし整数で表すことができます。必要なことは、指定された数値n(今日の日付を含む)で割り切れる最新の日付を計算し、その日付を上記の形式で返す最短のプログラムまたは関数を作成することです。指定した整数で割り切れる日付(00000101から今日まで)が一度もなかった場合は、-1を返す必要があります。 例 Current Date Input Output 30 July, 2014 4 20140728 30 July, 2014 7 20140729 28 July, 2014 4 20140728 28 July, 2014 7 20140722 28 July, 5 90000 -1 入力 STDINから読み取るか、関数の引数を取るか、入力が変数に格納されることを期待することもできます。入力は符号なし整数になります。 出力 日付を表す整数をYYYYMMDD形式で返すか、STDOUTに書き込むか、変数に保存します。 制限事項 言語が提供する標準ライブラリを使用できます。標準の抜け穴が適用されます。 勝利条件 これはcode-golfなので、最小のプログラム(バイト単位)が勝ちます。同点の場合は、投票数が最も多い答えが勝ちです。
24 code-golf  date 

3
猫の情報を隠す
あなたはあなたの祖国と通信しようとしている秘密のエージェントです。もちろん、情報を隠して、だれもメッセージを落とさないようにする必要があります。猫よりも適しているものは何ですか?誰もが猫の面白い写真を愛している[要出典]ので、彼らはそこに隠れている秘密の情報を疑うことはありません! ゲームのモナコが共有レベルのレベル情報を保存するために使用するアルゴリズムに触発され、画像の色の最下位ビットに情報をエンコードするプログラムを作成するのはあなたのタスクです。 エンコード形式: 最初の24ビットは、残りのエンコードされたバイト文字列の長さをビット単位で決定します 画像は左から右、上から下に読み取られ、明らかに左上のピクセルから始まります。 チャンネルは赤から緑、青に読み取られます 各チャネルの最下位ビットが読み取られます ビットはビッグエンディアン順に保存されます ルール: プログラムは、エンコードされる単一のバイト文字列と、ベースイメージの単一のイメージファイル名を受け取ります 結果の画像はトゥルーカラーPNGファイルとして出力される必要があります プログラムの使用方法を述べる限り、好きな形式(ARGV、STDIN、STDOUT、ファイルの書き込み/読み取り)でI / Oを使用できます。 面白い猫のランダムな画像を選択し、プログラムをエンコードして、プログラムが機能することを示す必要があります 有効な入力のみが提供され、ビットの量が十分でない場合、画像がトゥルーカラー形式ではない場合、画像が存在しない場合、または同様の問題が発生する場合があります 提供された画像にはアルファチャンネルが含まれていないと想定できます 長さはBOMなしのUTF-8バイトでカウントされます このPHPスクリプトを使用してソリューションをテストし、PNGファイルの名前を最初のコマンドライン引数として指定できます。 <?php if ($argc === 1) die('Provide the filename of the PNG to read from'); $imageSize = @getimagesize($argv[1]); if ($imageSize === false) die('Not a PNG file'); list($width, $height) = $imageSize; $image = …

6
最も近い分数
仕事: あなたのプログラムには、形式で適切で正の単純分数が与えられます<numerator>/<denominator>。 この入力では、2つの分数を見つける必要があります。 入力より少ない分数。 入力より大きい分数。 両方の分数は、入力よりも低い分母を持つ必要があります。可能なすべての小数のうち、入力との差が最も小さいはずです。 出力: プログラムの出力は次のとおりである必要があります。 入力よりも小さい、形式の分数<numerator>/<denominator>。 空白文字(ASCIIコード32)が続きます。 次の形式で、入力より大きい分数が続きます<numerator>/<denominator>。 次のように: «fraction that is < input» «fraction that is > input» ルール: 出力されるすべての小数部は最低条件でなければなりません。 出力されるすべての分数は適切な分数でなければなりません。 ルールで許可されている適切な分数がない場合0は、分数<入力では1なく、分数>入力ではなく出力する必要があります。 分数をコマンドライン引数として受け取るかどうかを選択できます(例: yourprogram.exe 2/5、ユーザー入力のプロンプトを表示。 あなたのプログラムが無効な入力を受け取らないと仮定するかもしれません。 最短のコード(バイト単位、任意の言語)が優先されます。 非標準のコマンドライン引数(通常、スクリプトの実行に必要ではない引数)は、合計文字数にカウントされます。 あなたのプログラムがしてはいけないこと: 外部リソースに依存します。 特定のファイル名を持つことに依存します。 必要な出力以外を出力します。 実行に非常に長い時間がかかります。プログラムが6桁の分子と分母を持つ分数で1分以上実行される場合(例:179565/987657平均的なホームユーザーのコンピューターで、それは無効です。 0分母として分数を出力します。ゼロで割ることはできません。 0分子として分数を出力します。プログラム0は、分数ではなく出力する必要があります。 入力した分数を減らします。入力として指定された分数が還元可能な場合、入力された分数を使用する必要があります。 あなたのプログラムは、このチャレンジが投稿される前に公的に利用可能なコンパイラ/インタプリタが存在しなかったプログラミング言語で書かれていてはなりません。 例: 入力: 2/5 出力: 1/3 1/2 入力: 1/2 出力: …

8
ノノグラムパズルを作成する
お絵かきロジックはこのような何か(ゲームのスクリーンショットに見える2次元のロジックパズルですPixelo、私のお気に入りのお絵かきロジックゲーム): ゲームの目的は、これらの数字がエンコードしている画像を把握することです。ルールは単純です。列または行の数字は、その列または行のどこか、多くのボックスが行で埋められることを意味します。たとえば、上の画像の一番下の行にはボックスを埋めてはならず、その上の行にはすべてのボックスを埋めておく必要があります。下から3番目の行には8つの塗りつぶされたボックスがあり、それらはすべて1列になります。 同じ列または行に2つ以上の数字がある場合は、塗りつぶされたボックスが複数の「実行」されており、それらの間に少なくとも1つのスペースがあり、それらの長さがあります。順序は保持されます。たとえば、上の画像の一番右の列には3つの塗りつぶされたボックスがあり、それらの下に少なくとも1つのスペースがあり、さらにもう1つの塗りつぶされたボックスがあります。 ほぼ完成した同じパズルを次に示します。 (Xは重要ではなく、プレイヤーが「このマスは間違いなく塗りつぶされていません」と言うためのヒントです。マインスイーパでフラグを考えてください。ルールの意味はありません。) たとえば、「2 2」というヒントのある中央の列には、2つの長さの塗りつぶされたボックスが2つあることがわかります。 あなたがそれを受け入れることを選択した場合、あなたの使命は、このようなパズルを作成するプログラムまたは機能を書くことです。ボードのサイズは、stdinの単一の整数(5 <= n <= 50)または引数として与えられます(ノノグラムパズルを正方形にする必要はありませんが、この課題ではそうなります)。その後、画像内の塗りつぶされた正方形と塗りつぶされていない正方形をそれぞれ表す一連の1と0が与えられます。最初のnは上の行、次の行などです。2* 1セルのボードを標準出力に戻すか、印刷します(見栄えがよく、列に2桁のヒントを表示できるためです) )、それらはすべて空で、入力データに対応するヒントがあります。 出力フォーマット サンプル 入力: ./nonogram <<< '5 0 1 1 1 0 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1 0 1 1 1 0' OR n(5,[0,1,1,1,0,1,1,0,1,1,1,0,1,0,1,1,1,0,1,1,0,1,1,1,0]) 画像: 出力: 1 …
24 code-golf 

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