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

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

24
来週の13日金曜日
次回金曜日が月の13日になると予測できる最短のプログラムは何ですか? 完全に機能するプログラムである必要があります(単なる関数/サブルーチンではありません) 次の形式で日付を印刷する必要があります。 YYYY-MM-DD ユーザーがコマンドライン引数として、または STDIN ユーザーが開始日を指定しない場合、開始日として今日を使用します。 開始日が13日金曜日の場合、プログラムは次の13日金曜日を見つける必要があります。 今日プログラムを実行する場合(2011年2月16日)、次の出力が表示されます。 $ ./fr13th 2013-05-09 2013-09-13 $ ./fr13th 2007-06-29 2007-07-13 $ ./fr13th 2007-07-13 2008-06-13 $ ./fr13th 2011-05-13
15 code-golf  date 

18
浮動小数点XOR
あなたの仕事はとても簡単です。2つの浮動小数点を与え、それらのビットごとのxorまたはバイナリ表現を与え、それを浮動小数点として出力します。 例えば、 Normal: 16.7472 ^ 123.61 = 7.13402e-37 Binary: 01000001100001011111101001000100 ^ 01000010111101110011100001010010 = 00000011011100101100001000010110 Normal: 2.2 ^ 4.4 = 1.17549e-38 Binary: 01000000000011001100110011001101 ^ 01000000100011001100110011001101 = 00000000100000000000000000000000 Normal: 7.898 ^ 3.4444 = 1.47705e-38 Binary: 01000000111111001011110001101010 ^ 01000000010111000110101001111111 = 00000000101000001101011000010101 制限/説明: 入出力は、任意の便利な方法で指定できます。 このプログラムは、完全なプログラムでも機能だけでもかまいません。どちらでも構いません。 float型には任意のサイズを指定できますが、最小サイズは2バイトです。 標準的な抜け穴は禁止されています。 最短のコードが優先されます。

30
前進2歩、後退1歩
私が目的地から10歩離れているとしましょう。「二歩前進、一歩後退」という古いことわざに従って歩きます。目的地に正確に立つまで、2歩前進します。(これには、目的地を通過してそこに戻ることが含まれる場合があります)。何歩歩きましたか? もちろん、私は10歩離れていないかもしれません。私は11歩、つまり100歩かもしれません。10歩を測定し、問題を解決するために前後に歩き続けるか、...コードを書くことができます。 関数を記述して、Nステップ離れるのに必要なステップ数を順番に計算します。2ステップ前進、1ステップ後退します。 ステップ0で開始したと仮定します。「2ステップ先」を1ステップではなく2ステップとしてカウントします。 すべてのステップが一定の長さであると仮定します。 そのスペースに到達したときに最初にとったステップ数を返します。(たとえば、10ステップ離れると26ステップかかりますが、ステップ30でもう一度ヒットします)。26に興味があります。 好きな言語を使用してください。 入力として正の整数を受け入れる必要があります。これはターゲットステップを表します。 最小バイト数が勝ちます。 例: 5つのステップを取得したい: | | | | | | <- I'm at step 0, not yet on the grid. | |X| | | | <- I take two steps forward, I'm on step 2: the count is 2 |X| | | | …

2
有効なチェスの動きですか?
代替名: ChessMoveQ それぞれが4つの要素で構成される最大32個の要素のリストと、4つの要素を持つ2番目のリストが与えられた場合、2番目の入力で詳細な動きが有効なチェスの動きであるかどうかを判断します。 最初のリストは、ボード上の32個すべてのピースの位置を示しています。各要素は<colour>, <piece-name>, <x-coord>, <y-coord>、などの構造に従います["W", "K", 5, 1]。これは、白いキングが5, 1(e1通常のチェス盤で)オンであることを示します。最初の入力のすべての要素は一意です。<x-coord>そして<y-coord>、常に一つの例は以下のようになり1と8の間になります。 [["B", "K", 3, 8], ["B", "Q", 1, 5], ["B", "N", 4, 7], ["B", "N", 7, 8], ["B", "B", 2, 4], ["B", "R", 4, 8], ["B", "R", 8, 8], ["B", "P", 1, 7], ["B", "P", 2, 7], ["B", "P", 3, …

2
答える質問をいくつかください!
前書き 時々私は退屈し、PPCGに新しい質問がないので、PPCGの過去からランダムな質問を掘ってほしいです。 チャレンジ 入力としてユーザーのPPCG IDを指定します(たとえば、私のIDは30525です)。ランダムに選択されたPPCG質問のURLを出力します。質問が次の基準を満たさない場合、基準を満たすまで別の質問を選択する必要があります。 質問者は、質問にIDが入力されたユーザーであってはなりません 質問にIDが入力されたユーザーが質問に回答していないこと 質問は未回答であってはなりません。それはおそらく難しすぎるでしょう 質問には10個以上の回答を含めることはできません。おそらく簡単すぎるでしょう 質問にはcode-golfタグを付ける必要があります ルール URL短縮サービスは許可されていません。 Stack Exchange APIとStack Exchange Data Explorerを使用できます。 実際のPPCGユーザーのIDのみが与えられます。 万一、適切な質問がない場合は、何も出力する必要はありません(未定義の動作は問題ありません)。 サイドチャレンジ 余分なポイントは授与されませんが、実行時にブラウザーウィンドウを開いて上記の基準に従うランダムなPPCG質問を作成する使用可能なブックマークレットを誰かが設計していただければ幸いです。ユーザーIDはプログラムにハードコーディングする必要があります(ブックマークレットの場合のみ)。 チャレンジ バイト単位の最短コードが優先されます。

5
バイナリ畳み込み
バイナリ畳み込みは数値Mで記述され、数値に適用されNます。のバイナリ表現の各ビットについてM、ビットが設定されている場合(1)、出力の対応するビットは、対応するビットに隣接する2ビットをXORすることで与えられますN(必要に応じて折り返します)。ビットが設定されていない場合(0)、出力の対応するビットはの対応するビットによって与えられNます。 実用的な例(8ビット値): ましょうN = 150、M = 59。それらのバイナリ表現は(それぞれ)10010110と00111011です。 Mのバイナリ表現に基づいて、ビット0、1、3、4、および5が畳み込まれます。 ビット0の結果は、ビット1と7をXORすることで得られ1ます(折り返すため)。 ビット1の結果は、ビット0と2のXOR演算によって得られ0ます。 ビット2の結果は、元のビット2で与えられ、を生成し1ます。 ビット3の結果は、ビット2と4のXORによって得られ0ます。 ビット4の結果は、ビット3と5のXOR演算によって得られ0ます。 ビット5の結果は、ビット4と6のXORによって得られ1ます。 ビット6と7の結果は、元のビット6と7で与えられ、とを生成0し1ます。 したがって、出力は10100110(166)です。 チャレンジ とが与えられたときN、on Mによって記述されたバイナリ畳み込みを実行した結果を出力しMますN。入力および出力は、便利で一貫性があり、明確な形式である場合があります。Nそして、M常に(包括的)範囲[0, 255](8ビット符号なし整数)にあり、バイナリ畳み込みを実行するために、バイナリ表現を8ビットにパディングする必要があります。 テストケース 150 59 -> 166 242 209 -> 178 1 17 -> 0 189 139 -> 181 215 104 -> 215 79 214 -> 25 190 207 -> 50 61 …
15 code-golf  binary  integer  bitwise  code-golf  rational-numbers  code-golf  string  palindrome  code-golf  ascii-art  code-golf  code-golf  string  fibonacci  code-golf  math  sequence  code-golf  code-golf  string  palindrome  code-golf  string  code-golf  math  primes  source-layout  code-golf  sequence  binary  integer  code-golf  math  arithmetic  game  code-golf  restricted-source  palindrome  code-golf  restricted-source  palindrome  code-golf  combinatorics  binary  code-golf  string  math  code-golf  ascii-art  number  code-golf  cipher  code-golf  base-conversion  counting  code-golf  sequence  random  classification  code-golf  string  subsequence  code-golf  permutations  code-golf  string  code-golf  string  cipher  code-golf  kolmogorov-complexity  arithmetic  integer  code-golf  quine  markov-chain  code-golf  string  code-golf  code-golf  ascii-art  maze 

18
簡単に減量する方法は?
この質問では、運動をして体重を減らすことにのみ焦点を当てますが、体重を減らす方法はまだたくさんあります。 異なるスポーツは異なる量のカロリーを消費します。 たとえば、1時間のビリヤードをプレイすると102カロリー[1]を消費できますが、15分間のバスケットボールをプレイすると119カロリー[1]を燃焼できます。 簡単さを比較する正確な方法は、消費カロリーを必要な時間で割ることで、簡単さの指標(EI)が得られます。 たとえば、15分間のフェンシングでは85カロリーを消費でき、85/15のEIが得られます。 次の形式のリストが表示されます。 [["fencing",15,85],["billiards",60,102],["basketball",15,119]] またはあなたが望む他のフォーマット。 次に、最高のEIを持つスポーツを出力します。 TL; DR タプル[name,value1,value2]出力のリストが与えられると、namewhere value2/value1が最高になります。 制約 あなたはありませんプロセスで整数でない任意の実数を作ります。 組み込みの分数を使用することはできません。 仕様(仕様) 結果を満たす名前が複数ある場合、それらの空でないサブセットまたはそれらの要素を出力できます。 名前はregexと一致し/^[a-z]+$/ます。つまり、小文字のラテン標準アルファベットのみで構成されます。 リストは空になりません。 テストケース 入力: [["fencing",15,85],["billiards",60,102],["basketball",15,119]] 出力: basketball 参照資料 http://calorielab.com/burned/

1
NAND論理ゲートを使用してミニフロート追加マシンを構築する
minifloatは、非常に少数のビットを有する浮動小数点数のバイナリ表現です。 この質問のミニフロートmは、次の表現を持つ6ビットの数値として定義されます。 数値の符号を表す1ビット。このビットは0、数値が正の1場合、および数値が負の場合になります。 オフセットした数値の指数を表す3ビット3(つまり、110実際の指数は2 6ではなく2 3の係数を表します)。 の指数は000、非正規数を指します。仮数と0は、可能な限り最小の指数のファクター(この場合は2 -2)を乗算した整数部分を持つ数値の小数部分を指します。 数値の仮数を表す2ビット。指数がまたは以外の000場合111、2ビットはaの後の小数部を表し1ます。 の指数は、仮数がである場合を111表しinfinity、それ以外の場合は(数値ではない)を表します。0NaN ウィキペディアの記事では、これは(1.3.2.3)ミニフロートと呼ばれます。 このミニフロートの表現の例: 000000 = 0.00 = 0 000110 = 1.10 × 2^(1-3) = 0.375 001100 = 1.00 × 2^(3-3) = 1 011001 = 1.01 × 2^(6-3) = 10 011100 = infinity 011101 = NaN 100000 = -0.00 = -0 100011 …

8
Hello Worldのポリグロットを作成する
「Hello World!」を出力するテキストファイルを作成します コンパイル/解釈するときにできるだけ多くのプログラミング言語で、できるだけ短くします。 提出のスコアはとして計算されますC / 2 ^ ((L - 1) / 4)。ここで、「C」はテキストファイルの文字数、「L」はプログラムが有効な言語の数です。もちろん最低スコアが勝ちます。

3
順列グループ操作
n個の要素と0からn!-1までの数字の順列の間には、順列と対応する数字の辞書式順序が同じになるように、よく知られた全単射があります。たとえば、n = 3の場合: 0 <-> (0, 1, 2) 1 <-> (0, 2, 1) 2 <-> (1, 0, 2) 3 <-> (1, 2, 0) 4 <-> (2, 0, 1) 5 <-> (2, 1, 0) n個の要素の順列がグループ(n次の対称グループ!)を形成することもよく知られています-したがって、特に、n個の要素の1つの順列がn個の要素の2番目の順列に適用されると、n個の要素の順列が生成されます。 たとえば、(a、b、c)に(1、0、2)を適用すると(b、a、c)が得られるため、(1、0、2)を(2、1、0)に適用すると(1、2 、0)。 n、p1、およびp2の3つの整数引数を取るプログラムを作成します。p1とp2をn個の要素の順列として解釈します。1番目を2番目に適用します。対応する整数を出力します。例えば: $ ./perm.sh 3 2 5 3

10
数字の日付範囲
注:私はオランダ人なのでdd-MM-yyyy、チャレンジの説明とテストケースではすべての日付がオランダ語の形式になっています。 チャレンジ: 入力: 開始日sss ; 終了日eee ; 桁nnn 出力: 範囲[s,e][s,e][s,e](両側を含む)内のすべての日付。日付にnnnの一意の数字が含まれます。 例: 入力:開始日:12-11-1991; 終了日:02-02-1992; 桁:4 出力: 日/月の先頭に0を付けます: [20-11-1991, 23-11-1991, 24-11-1991, 25-11-1991, 26-11-1991, 27-11-1991, 28-11-1991, 30-11-1991, 01-12-1991, 02-12-1991, 09-12-1991, 10-12-1991, 13-12-1991, 14-12-1991, 15-12-1991, 16-12-1991, 17-12-1991, 18-12-1991, 20-12-1991, 23-12-1991, 24-12-1991, 25-12-1991, 26-12-1991, 27-12-1991, 28-12-1991, 31-12-1991, 01-01-1992, 02-01-1992, 09-01-1992, 10-01-1992, 11-01-1992, 12-01-1992, 19-01-1992, 20-01-1992, …
15 code-golf  number  date 

13
ビッグブラザーを引用
タスク:実行時にプログラムに次の2つの引用符のいずれかをランダムに選択させ、その1つの引用符を表示どおりに印刷します。 1: Under the spreading chestnut tree I sold you and you sold me. There lie they, and here lie we Under the spreading chestnut tree. 2: WAR IS PEACE. FREEDOM IS SLAVERY. IGNORANCE IS STRENGTH. 制限事項:言葉spreading、chestnut、PEACE、FREEDOM、とSTRENGTH しなければならないあなたのコードで表示されます。上記の2つの引用符からの単語は、コード内で複数回使用できません。 最短のソリューションが勝ちます。

20
10進表現のすべての複数桁の部分文字列も素数であるすべての正数を印刷/出力します。
仕事 あなたの仕事は、すべての正数を印刷または出力することであり、その場合、その10進表現の複数桁の部分文字列もすべて素数になります。数値に少なくとも2桁ある場合、これは数値自体も素数である必要があることを意味します。 例 6197内のすべての多桁のストリングのためのシーケンスである6197:すなわち、素数である61、19、97、619、197、6197(それ自体)。 6は素数ではないが、の複数桁の部分文字列ではない6197ため、シーケンス内にあることに注意してください。66197 8内のすべての複数桁の部分文字列8は素数であるため、シーケンス内にもあります。には複数桁の部分文字列はない8ため、これは空虚な真実の場合です。 スペック 標準の抜け穴が適用されますが、出力をハードコーディングしたり、プログラムに出力に関連する情報を保存したりすることはできません。 出力の番号は任意の順序で指定できます。 出力内の数字は重複することが許可されています。 出力の代わりに印刷することを選択した場合、任意の区切り文字を使用できます。 出力の代わりに印刷することを選択した場合、出力の前置または後置、あるいはその両方が許可されます。 区切り文字、接頭辞、および接尾辞に数字を含めることはできません(U + 0030〜U + 0039)。 全リスト(58アイテム) 1 2 3 4 5 6 7 8 9 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 113 131 …

2
一連のターンが与えられた最短の自己回避経路
右または左ターンの空でないシーケンスが与えられた場合に、それらのターンを持つ2Dラティス上の最短の自己回避パスの長さを出力するプログラムまたは関数を記述します。 入力は、各文字があることで、文字列として扱われるべきRか、Lそれぞれ右左折のために。 出力は整数、つまり指定されたターンの最短経路の長さでなければなりません。 これはゴードゴルフです-最短のコードが勝ちます。 例 与えられた入力 LLLLLLLLLLRRL 最短パスは次のとおりです(から開始#): +-+-+-+-+-+-+ | | + . + +-+-+ + | | | | | + +-+ + #-+ + | | | | + +-+ +-+-+-+ | | +-+-+ . . . . そして、このパスの全長は29(sではなく、s -と|sを数える+)です。 テストケース L 2 RRRRRRRRRR 23 LRRLRLRRRRL 15 LLRRLRRRRLLL …

11
最高のラインを見つける
整数の2次元配列Aと長さNが与えられます。あなたの仕事は、配列内で、N個の要素の直線(水平、垂直、または斜め)を見つけて、合計の合計が最大になるようにし、その合計を返すことです。 。 例 N = 3, A = 3 3 7 9 3 2 2 10 4 1 7 7 2 5 0 2 1 4 1 3 この配列には、以下を含む34の有効な行があります。 Vertical [3] 3 7 9 3 [2] 2 10 4 1 [7] 7 2 5 0 2 1 4 1 3 …

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