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

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

4
チェス騎士の最短経路
プログラムは、チェスの騎士がチェス盤の各マスに到達するのにかかる移動数を計算する必要があります。入力は、開始正方形の座標(水平座標と垂直座標、それぞれ0〜7を含む)を表す2つのスペースで区切られた整数になります。プログラムは、チェスナイトが各マスに到達するために必要な最小移動数を含む数値グリッドを出力する必要があります。 例 入力 0 0 出力 03232345 34123434 21432345 32323434 23234345 34343454 43434545 54545456 入力 3 1 出力 21232123 32303232 21232123 34121432 23232323 32323234 43434343 34343434 最短のコードが優先されます。
12 code-golf  chess 

7
今日(または他の日付)は何曜日ですか?
仕事 ユーザーが入力する日付の曜日名を計算するプログラムまたは関数を作成します。 入出力 入力は文字列ですYYYYMMDD。 入力値の例: 20110617:2011年6月17日 19040229:1904年2月29日 06661225:666年12月25日 00000101:1月1日、0 99991231:9999年12月31日 すべての入力が有効であるとみなすことができます。ゼロ年は有効であることに注意してください。 出力は、間の整数である0と6。各整数は曜日名を表します。この整数のように、どの整数が曜日名を表すかを自由に決定できます 0:月曜日 1:火曜日 2:水曜日 ... 6:日曜日 (順番に)またはこれ 0:月曜日 1:水曜日 2:日曜日 ... 6:土曜日 (順不同)。 テストケース 曜日出力の入力(この例では[0..6-> Monday..Sunday]が使用されます。) 20110617金曜日4 19500101日曜日6 22220202土曜日5 19000228水曜日2 19000301木曜日3 19450815水曜日2 19040229月曜日0 19040301火曜日1 17760704木曜日3 20000228月曜日0 20000229火曜日1 20000301水曜日2 20121223日曜日6 00000401土曜日5 66660606水曜日2 59161021土曜日5 制限 あなたはしてはならない使用どのように、タイムスタンプまたは日付に関連する機能/クラスの種類を/ ... DateにクラスJava/ JavaScript/ ActionScript、またはgetdateで機能PHP。 現在、多くの人々が使用しているグレゴリオ暦を使用する必要があります。 …
12 code-golf  date 

5
多項式補間
真の任意精度の有理数を使用して多項式補間を実行するプログラムを作成します。入力は次のようになります。 f(1)= 2/3 f(2)= 4/5 f(3)= 6/7 ... =符号の前後に空白が1つだけあると仮定することができます。すべての数値は小数または整数です。また、入力のすべての端数はすでに既約であると仮定することもできます。 入力が有効であり、f(x)でxが2倍になっていると仮定しても、エラーチェックは必要ありません。 出力はLaTeXと互換性のある形式である必要があり、出力されたLaTeXコードはここで与えられた出力と同じグラフィック表現を生成する必要があります。 f(x)= 123x ^ 2 + \ frac {45} {2} x + \ frac {7} {4} 端数は可能な限り減らす必要があります。のようなもの\frac{2}{4} は許可されていません。数値が整数の場合、分数を使用しないでください。 特別なルール: あなたのプログラムは... 12次までの多項式で機能する 合理的な入力のために1分未満で完了 計算全体を行う関数を使用しないでください 最小次数の多項式を出力します テストケース: 指定されたテストケースは、説明のためだけのものです。プログラムは、すべての正しい入力に対して正しい結果をもたらすはずです。 入力 f(1)= 2/3 f(2)= 4/5 f(3)= 6/7 出力 f(x)=-\ frac {4} {105} x ^ …

22
テキストではなくJAxH難読化メソッド[非公開]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 閉じた2年前。 JAPHは、「もう1つのPerlハッカー」を出力するプログラムを作成する壮大な伝統です。このサイトではJAPHについてすでに質問がありますが、テキストの非表示に関心があるようですが、JAPHは常に、その機能を実行する方法を非表示にすることを重視しています。したがって、私はあなたにあなたの好きな言語のクールな機能を誇示するように挑戦し、テキストを隠すことをあまり心配しないでください(あなたが望んでいない限り)。 これはPerlの私のものです。ベロキラプターの経験者が理解するのは難しいことではありませんが、他の人にとっては興味深いかもしれません。 (*STORE,*TIESCALAR)=map{eval"sub{$_}"}qw'map{print&&sleep$|}split//,pop bless\$|++';tie$t,main;$t="Just another Perl hacker,\n" 皆さんの投票で主観的に判断し、心のベンダーを見てみましょう!

1
8パズルを解く
8パズルは、15Puzzle(またはSliding puzzle)の小さなバリエーションです。3x3ランダムな順序で配置された0〜8の数字(0は空白のタイルを示します)で埋められたグリッドがあります。あなたのタスクは、3x3グリッドを入力し、目標状態に到達するための最短の解決策(最小の移動)を表示することです。出力の最初の状態を含む各ボード状態を表示します。 最適なソリューションが複数ある場合がありますが、印刷する必要があります。 入力:(小さな例) 1 2 0 4 5 3 7 8 6 出力: 2 <- denotes minimum number of moves required 1 2 0 4 5 3 7 8 6 1 2 3 4 5 0 7 8 6 1 2 3 4 5 6 7 8 0 <- …

8
最大パスを見つける
正の二乗が与えられた場合、自然数はプログラムに沿って水平方向と垂直方向のパスを見つけ、それらに沿った数の合計が最大になるようにします。水平パスは、最後に、最初の列から進み、各ステップのいずれかによって、その列の位置を増加しなければなりません。縦パスは、最後に、最初の行から進み、各ステップのいずれかによって、その行の位置を増加しなければなりません。さらに、水平経路の行位置は、垂直経路の場合と同様に、同じままであるか、いずれかの方向に1つずつ変化します。 説明のために、以下が有効なパスである可能性があります。 次のパスは逆方向に進むため無効になります(一部の場所では同じ行に残ります)。 次のパスは、1つのステップで行の位置を複数変更するため、同様に無効になります。 注:ソリューションは許容可能な時間内に実行する必要があります。 入力 n 個のスペースで区切られた正の整数を持つ入力のn行は、標準入力で与えられます。2≤ N ≤40各行は改行で終了されます。数値は十分に小さいため、最大合計は32ビット符号付き整数に収まります。 出力 単一のスペースで区切られた水平および垂直パスの(その順序での)最大合計。 サンプル入力1 1 2 1 2 サンプル出力1 3 4 サンプル入力2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 …
12 code-golf 

1
壊れた暗号を破る
乗算およびモジュラス法を使用して、2つの数値をカオス的に循環させる単純なランダムジェネレーターを設計しました。そのためにうまく機能します。 しかし、暗号ジェネレータとして使用する場合、攻撃者が一連の乱数からシードをリバースエンジニアリングできるため、既知のプレーンテキスト攻撃に対して脆弱です。 暗号が壊れていることを証明するために、可能な限り少ない電力、CPU時間などを使用して、[0; 255]の範囲で連続して7つのゼロを生成するシード値の正当なペアを見つけます。 JavaScriptで作成されたランダムジェネレーターを次に示します。 function seed(state1,state2){ //Constants var mod1=4294967087 var mul1=65539 var mod2=4294965887 var mul2=65537 function random(limit){ //Cycle each state variable 1 step state1=(state1*mul1)%mod1 state2=(state2*mul2)%mod2 //Return a random variable return (state1+state2)%limit } //Return the random function return random } //Initiate the random generator using 2 integer values, //they must …

8
クインチャレンジI
チャレンジ このタスクでは、整数N (-1e9 <= N <0 && 0 <N <= + 1e9)を入力するプログラムを作成し、T =(abs(N)%M + 1)を計算する必要があります。 Nは正であり、最初からT番目の文字を出力し、そうでない場合はソースの最後からT番目の文字を出力します。 Mは、ソースのバイト単位のサイズです。 例:ソースが次の場合:abcd efg/hi 入力: 2 出力: c 入力: -3 出力: g 入力: -9249678 出力: b 入力: -11 出力: i 制約 FILE操作を使用しないでください 任意の言語を使用できます それはすべての楽しみを台無しにするので、回避しようとするか、むしろ1バイトの提出を使用しないでください。 最短のソリューションが勝ちます! 編集:問題文が修正され、ランダムテストデータ(およびすべてのソリューションで同じデータ)を使用してソリューションを判断できるようになりました。したがって、ソリューションを更新してください(ご不便をおかけします)。
12 code-golf  quine 

9
階乗の分岐
このゴルフでは、要因計算を複数のスレッドまたはプロセスに分割する必要があります。 一部の言語はこれを他の言語よりも調整しやすいため、言語に依存しません。非ゴルフのサンプルコードが提供されていますが、独自のアルゴリズムを開発する必要があります。 コンテストの目標は、Nを計算するための最短(秒単位ではなく、バイト単位)のマルチコア要因アルゴリズムを誰が思い付くかを確認することです。コンテスト終了時の投票数で測定されます。マルチコアの利点があるはずなので、N〜10,000で機能する必要があります。著者がプロセッサ/コア間で作業を分散する方法の有効な説明を提供できなかった場合、投票者は投票し、ゴルフの簡潔さに基づいて投票する必要があります。 好奇心のために、いくつかのパフォーマンスの数値を投稿してください。ある時点でパフォーマンスとゴルフスコアのトレードオフが存在する場合がありますが、要件を満たしている限り、ゴルフを使用します。これがいつ起こるのか知りたいです。 通常利用可能なシングルコアのビッグ整数ライブラリを使用できます。たとえば、perlは通常bigintと共にインストールされます。ただし、階乗関数が提供するシステムを呼び出すだけでは、通常、複数のコアに作業が分割されないことに注意してください。 入力NをSTDINまたはARGVから受け入れ、N!の値をSTDOUTに出力する必要があります。オプションで2番目の入力パラメーターを使用して、プログラムにプロセッサー/コアの数を提供することもできます。これにより、以下に示す内容が実行されなくなります。 以下に、異なる言語の要因アルゴリズムのスタックオーバーフローで以前に提出した、独自の奇数ボールperlの例を投稿します。ゴルフではありません。多数の他の例が提出されました。それらの多くはゴルフですが、多くはそうではありません。シェアライクライセンスのため、上記のリンクの例にあるコードを出発点として自由に使用してください。 私の例のパフォーマンスは、いくつかの理由で不十分です:あまりにも多くのプロセス、過度の文字列/ bigint変換を使用します。私が言ったように、それは意図的に奇妙な例です。5000を計算します!ここでは4コアマシンで10秒未満で。ただし、より明確な2ライナーfor / nextループは5000を実行できます!3.6秒の4つのプロセッサの1つ。 あなたは間違いなくこれよりもうまくやらなければなりません: #!/usr/bin/perl -w use strict; use bigint; die "usage: f.perl N (outputs N!)" unless ($ARGV[0] > 1); print STDOUT &main::rangeProduct(1,$ARGV[0])."\n"; sub main::rangeProduct { my($l, $h) = @_; return $l if ($l==$h); return $l*$h if ($l==($h-1)); # arghhh - multiplying …
12 code-golf 

5
分離プレス
http://en.wikipedia.org/wiki/Dissociated_press Dissociated Pressは、既存のテキストからランダムテキストを生成するアルゴリズムです。 アルゴリズムは、テキスト内のN個の連続した単語(または文字)を印刷することから始まります。次に、すべてのステップで、すでに印刷された最後のN個の単語(または文字)の元のテキストでのランダムな出現を検索し、次の単語または文字を印刷します。 関数またはプログラム全体として、Dissociated Pressを実装します。最短のコードが優先されます。コマンドラインまたはemacsスクリプトを使用して、元のDissociated Pressプログラムを呼び出さないでください。外部ライブラリを使用しないでください。


7
どのくらいの雪を手に入れましたか?
言葉遣いに謝罪。私たちは社内ゴルフで仕事でそれを楽しんでいましたが、明確にするためにいくつかのメールが必要でしたので、私はそのほとんどを初めてキャプチャしたことを望みます。 問題 「シミュレートされた」降雪スナップショット(関数/メソッドへの文字列、標準入力、またはパラメータとして)が与えられた場合、4つの値(最小深度、最大深度、平均深度、および期間)をレポートします。 入力を説明するためのフォーマットされた例を次に示します。 * * ** ** * *** ** * * * -------- 「*」は雪の結晶、「-」は地面です。それらのすべての「雪片」が地面に向かって落ちることを想像してください。これが最後の「スナップショット」です。 * * ** * ** ******** -------- 次について報告する必要があります。 最小深度-最短の「パイル」をカウントします(上記の例では1) 最大深度-最も高い「パイル」をカウントします(上記の例では4) 平均深度-すべての「パイル」の平均数(上記の例では1.9-10分の1に丸める) 期間-(各「フォール」= 1秒)-最初のスナップショットから最後のスナップショットまでの時間(上記の例では3秒) 参考のための別の例: * * * * * -------- 最終スナップショット: * * *** -------- 入力 開始の「スナップショット」には、8つの「行」、8つの「列」があり、パイプで区切られます(パイプによって行が区切られます)。例(引用符を除く): “ | | | | * | …
12 code-golf 

3
JSONバリデーターを書く
入力が有効なJSONかどうかを判断するプログラムを作成します。 入力: ASCIIテキスト:[\x00-\x7F]* 注:ASCIIに問題がある場合は、別のエンコードを使用しても構いませんが、投稿でそれを示してください。 出力: ValidまたはInvalid。末尾の改行は省​​略できます。 例: $ echo '{"key": "value"}' | ./json-validate Valid $ echo '{key: "value"}' | ./json-validate Invalid ルール: JSON解析ライブラリを使用しないでください。 部分的に正しいソリューションは許可されますが、眉をひそめます。 テストスイートのスコアを投稿します(以下を参照)。 最短正しいですソリューションの勝利。 プログラムでjson-validate-test-suite.shを実行し、スコアを投稿してください。例: $ ./json-validate-test-suite.sh ./buggy-prog fail: should be invalid: [ 0.1e ] fail: should be invalid: [ 0.1e+-1 ] fail: should be invalid: [ 0.1e-+1 …
12 code-golf 

6
面積の計算。
曲線p(x)= a 0 + a 1 * x + a 2 * x 2 + ...、ラインy = 0、ラインx = 0、ラインx = Cの間の面積を与える最小コード (つまり、このようなもの: ) x <Cに対してp(x)> = 0(コードがp(x)の負の値に対して機能する場合のボーナスポイント)と仮定できます。 入力 C、0、1、... 出力 実数-エリア 例1: input: 2, 0, 1 output: 2.0 例2: input: 3.0, 0, 0.0, 2 output: 18 更新: C> 0も想定されます …
12 code-golf 

14
昇順のNxNスパイラルを印刷[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックコードゴルフスタックExchange用。 閉じた2年前。 数値は、長さ=(N ^ 2の桁数)のフィールドに先行ゼロを付けて印刷する必要があります。 入力(N): 4 出力: 01 12 11 10 02 13 16 09 03 14 15 08 04 05 06 07 アルゴリズムと実装の清潔さに興味があります。したがって、空白はカウントされず、Nの上限は42です。

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