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

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

5
m3ph1st0sのプログラミングパズル3(C):「簡単なバグ」[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックコードゴルフスタックExchange用。 4年前に閉鎖されました。 これは私のシリーズのC / C ++パズルの3番目です。最初の2つを見逃した場合、それらはここにあります:(1)m3ph1st0sのプログラミングパズル1(C ++) (2)m3ph1st0sのプログラミングパズル2(C ++): "Call hard!" 私のパズルは100%オリジナルだと言わなければなりません。そうでない場合、私は常にテキストでそう述べます。私の3番目のパズルには、次の2つの部分があります。 パズル3.1 この部分(3.1)は私のオリジナルのパズルではなく、私が少し前に読んだインターネットのページから集められたものです。ここであなたの出発点とウォームアップとしてそれを使用します。これを解決してから、2番目の部分に進みます。 誰かが「+」記号を20回印刷しようとして、次のプログラムを思いつきました。 #include <stdio.h> int main() { int i; int n = 20; for( i = 0; i < n; i-- ) printf("+"); return 0; } 期待した結果が得られなかったという事実は明らかです-プログラムは終了しません。修理する!簡単?ここで、1文字のみを変更してプログラムを修正します-もちろんスペース以外の文字です!この課題には3つの解決策があります。3つすべてを見つけます。明確にするために、プログラムは20個の「+」記号を出力し、高速で終了する必要があります。「高速」が何を意味するかを批判する前に、それはせいぜい数秒であることを言います(ちなみにそれは多すぎますが、それを明確にするためだけです)。 パズル3.2 EDITED これは、以前の3.2.2パズルのためのソリューションは、コンパイラに依存かもしれないことを私に指摘しました。主題に関する考えられる議論を排除するために、論争を引き起こさないように特別な注意を払うときに、アイデアを修正し、次のパズルでそれを改善します。ただし、このパズルを継続するために、3.2.2を少し修正します(ソリューションは簡単ですが、よりクリーンになります)。 パズルを初めて見たとき、私はそれがかなりすごいと思いました。私は何とかそれを解決しましたが、すぐにではなく、注意を払う必要がありました。あなたがここにいるなら、あなたもそれを解決したことを意味します。すべての可能な文字をすべての可能な値に置き換えて、すべてのソリューションをテストするプログラムを作成してこれを行った場合、あなたは失われます。一生懸命働いています。20個の「+」記号を書き込むプログラムを修正しました。 3.2.1:結果が有効で、修正された3つのプログラムすべてで同じものが出力されるように、コードに1文字だけを挿入します。言うまでもなく、この文字はmainを囲む}の前にある必要があります(プログラムの後に文字を入れただけで、コンパイラが非常に友好的だったのは聞きたくないからです)。 編集(以下を参照)-これらの最後の質問では、カウンターiが0ではなく-1から始まることを考慮してください。 3.2.1.5:出力が少なくとも19個の「+」記号であるという条件で、以前のすべての問題を繰り返します(ただし、出力は有限です)。スペースの変更は許可されています。これで、最初のケースよりも多くの解決策が見つかりました。これらのいくつかは、3.2.2の質問に最も確実に適合します。 3.2.2:別の値を選択して変数nを初期化し、結果の出力が3.2.1.5の少なくとも1つの修正されたプログラムで同じになるようにします(すべてのプログラムである必要はありません)。 …

19
数字のグループから各数字を返します
チャレンジ プログラムは、数字のグループ(コンマとハイフンで区切られたシーケンス)に含まれるすべての数字を返す必要があります。 ルール s シーケンス文字列です。 に含まれるすべての数値sは正です。 数は常に増加します。 数字は繰り返されない 答えたら、の出力を表示します s="1,3-5,9,16,18-23" 例 input(s) outputs ----------------- 1 1 1,2 1,2 1-4 1,2,3,4 1-4,6 1,2,3,4,6 1-4,8-11 1,2,3,4,8,9,10,11 幸運を。=)

4
古典的なヘビゲームを再作成する
課題は、できるだけ少ないバイトを使用して古典的なSnakeゲームを作成することです。 要件は次のとおりです。 ゲームは一般的な2次元レイアウトで実装する必要があります。ヘビは、マップの境界内で大きく成長できるはずです(これは、実際には、マップを小さくしすぎず、ここであなたの裁量を使用することを意味します)。 ユーザーは、選択したキーを使用してヘビを動かすことができますが、ヘビは自分自身を元に戻すことはできません(たとえば、西に行く場合、最初に北または南に行かなければ東に行くことはできません)。ヘビは、上、下、左、右(北、南、西、東)の4方向すべてに移動できる必要があります。 ヘビは長さ1から始まり、「食品」オブジェクトを食べるたびに長さが+1増加します 食べ物のオブジェクトは、ヘビが占有している場所以外の場所にランダムに配置されます ヘビが自分自身または壁に当たった場合、ゲームは終了します ゲームが終了すると、「スコア:[スコア]」という文字列が表示されます。[スコア]は、ゲーム中に食べた食品の数です。そのため、たとえば、ゲームの終了時にヘビが4つの「食べ物」を食べた(したがって5の長さを持っている)場合、「Score:4」が印刷されます。 コードで明示的に定義されていない限り、圧縮アルゴリズムはありません。 これが私のソリューション、908 Bytes、Python 2.7です。 import random as r import curses as c def g(s,w,l): while 1: p=[r.randrange(0,w),r.randrange(0,l)] for l in s: if l==p:continue return p s=[] d=[0,1] p=k=n=0 e=100 v={65:[-1,0],66:[1,0],68:[0,-1],67:[0,1]} z=c.initscr() w,l=z.getmaxyx()[0],z.getmaxyx()[1] c.noecho() z.clear() x=g(s,w,l) s.append([w/2,l/2]) z.nodelay(1) q=lambda h,i:range(h,len(i)) while k!=101: k=z.getch() …
11 code-golf  game 

19
ゴロムの自己記述シーケンスのn番目の項を計算します
前の質問に触発されました。 ゴロムの自己記述シーケンス g(n)は、シーケンス内で任意の自然数nがg(n)回繰り返されるシーケンスです。 シーケンスの最初の数は次のとおりです。 n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 g(n) 1 2 2 3 3 4 4 4 5 5 5 6 6 6 6 7 7 7 7 8 g(4)= 3であり、「4」がシーケンス内で3回繰り返されていることがわかります。 の入力が与えられた場合n、output g(n)。 …

2
与えられた文字列で始まるメサはいくつですか?
次の条件が当てはまる場合、文字列の空でないリストをメサと呼びましょう。 リストされた各文字列は空ではなく、最初の文字列に出現する文字のみを使用します。 連続する各文字列は、前の文字列よりも正確に1文字長くなります。 リスト内の文字列は、リスト内の他の文字列のサブシーケンスではありません。 「メサ」という用語は、次のような視覚化からのものです(xsはさまざまなキャラクターになります)。 xx..x xx..xx xx..xxx . . . xx..xxx..x NB:有限数のメサだけが特定の文字列で始まることは数学的な事実です。サブシーケンスと サブストリングの違いに注意してください。たとえば、「anna」は「banana」のサブシーケンス(サブストリングではない)です。 チャレンジ: 任意の空でない英数字入力文字列を受け取り、その文字列で始まるメサの数を出力する最短のプログラムを作成します。 入力(stdin): 空ではない英数字文字列。 出力(stdout): 入力文字列で始まるメサの数。 得点: 勝者は、バイト数が最も少ないプログラムです。 メサの例 で始まるメサは1つだけaです。 a で始まるメサは1つだけaaです。 aa 多くのメサは以下で始まりabます: ab ab ab ab (and so on) baa aaa bbb bbba bbaa baaaa aaaaaa
11 code-golf 

8
タイピング速度テストを構築/ CPMを測定
ルール 選択した言語でタイピング速度テストを作成します! 1。選択した辞書を含むファイルを提供します(その中の「単語」はすべて改行で区切る必要があります)。経由でパイプするstdinか、コマンドライン引数としてその名前を指定します。 a できる 約 上 不在 ... 2。ファイルからランダムな単語を10個選択し(重複を許可しないでください)、次の方法で印刷します。 ->直接 ->地面 ->次へ -> 5 ... 3。これから費やした時間の測定を開始します! 4。ユーザーが10語すべてをできるだけ早く入力できるようにします(改行で終了します)。印刷OKあなたはマッチを持っているとき、印刷WRONG我々はタイプミスを持っている(または単語がすでに正常にこの実行に入力された)とき。 5。時計を止めろ!次に、次のように計算されるCPM(1分あたりの文字数)ベンチマークを印刷します(sum of the characters of the chosen words / time spent typing (seconds)) * 60。最も近い整数に丸めて、次の(サンプル)出力を再現します。 -> 344 CPMを獲得しました! サンプル実行 ->解決する ->側 ->開く ->大臣 ->リスク ->色 ->船 ->同じ ->サイズ ->剣 解決する OK 側 …
11 code-golf 

16
ASCIIボールインボックスアニメーション
*四角形(境界を含む20 x 10文字)内に移動するASCIIボールを表示するプログラムを作成します。ボールが長方形を横切ることはできません。たとえば、壁に当たったときにぶつかります。シーンは0.1秒ごとにクリアおよび再描画する必要があり、ボールはフレームごとにxおよびy方向に1文字移動する必要があります。どの言語でも書かれた最短のプログラムが勝ちます。 出力例(フレーム1) +------------------+ |* | | | | | | | | | | | | | | | +------------------+ 出力例(フレーム2) +------------------+ | | | * | | | | | | | | | | | | | +------------------+ 出力例(フレーム8) +------------------+ | | | | | | …

22
あまりにも多くの異なる文字を使用せずに母音を削除する
課題は、STDINから文字列から母音(a、e、i、o、u)を削除することです(はい、わかっています、単純です)。あなたはあなたのプログラムがの引数なしで実行されないことを期待することができますargv。 例: This program will remove VOWELS. So we can now speak without them. に変更されます: Ths prgrm wll rmv VWLS. S w cn nw spk wtht thm. キャッチがあります。受賞エントリは、異なるバイト数に基づいて決定されます。たとえば、a ab3つの異なるバイト(a、bおよびスペース)があります。2つ以上のエントリにこの同じ量の異なるバイトがある場合、それらのエントリのバイト数でフォールバックが行われます。

6
この日付までどのくらいですか?
考え方は次のとおりです。現在/今日の日付(関数が呼び出された時点)から引数として指定された日付までの時間の長さを出力する関数を作成します。 仮定: 入力日付は常に明日以降になります。 入力日が10年を超えることはありません。 ルール: 出力は次の形式である必要があります。「[z年]、[x月]、y日まで-入力日-」 出力時間枠(日/月/年)は正しく複数形にする必要があります。すなわち1 month、ない1 months 入力は、どの日付形式にすることができますが、( - 2012年3月15日- 2012年3月15日を3/15/12)を好みます。 例: プログラムが2012年3月15日に実行されると仮定します。 入力日3/20/12=5 days until 3/20/12 NOTの入力日付4/16/12=1 month, 1 days until 3/20/12 入力日2012.04.20=1 month, 5 days until 2012.04.20 NOTの入力日付2012.04.20=36 days until 2012.04.20 入力日10/31/17=5 years, 7 months, 16 days until 10/31/17 入力日3/15/13=1 year until 3/15/13 これはコードゴルフなので、最短のコードが勝ちます。 締め切りを設けるために、次の答えを選択します。 2012年3月23日! …
11 code-golf  date 

3
1つのソリューションのみでマルチレベルの5x5x5ラビリンスを作成する
この課題の目的は、以下を正常に実行する最短のコード(文字)を作成することです。 仕様: 5x5x5 labyrinthを正確に作成する必要があります1 possible solution(これ以上、それ以下) ラビリンスを作成する必要があります randomly 何年も実行を続ける場合、既存のソリューションをすべて生成できる必要があります。 startとfinishに配置する必要があります*opposite corners マップoutputは次のいずれかの形式である必要があります。 オプションの出力形式1 strings, printed or alerted: xxxxx,xxxxx,xxxxx,xxxxx,xxxxx/ xxxxx,xxxxx,xxxxx,xxxxx,xxxxx/ xxxxx,xxxxx,xxxxx,xxxxx,xxxxx/ xxxxx,xxxxx,xxxxx,xxxxx,xxxxx/ xxxxx,xxxxx,xxxxx,xxxxx,xxxxx オプションの出力形式2 arrays: [[xxxxx,xxxxx,xxxxx,xxxxx,xxxxx], [xxxxx,xxxxx,xxxxx,xxxxx,xxxxx], [xxxxx,xxxxx,xxxxx,xxxxx,xxxxx], [xxxxx,xxxxx,xxxxx,xxxxx,xxxxx], [xxxxx,xxxxx,xxxxx,xxxxx,xxxxx]] 出力ノート: 使用0のためにemptyと1のためにsquares ブレークラインがありませ必要 何indexが何であるかを決定しますが、それをうまく説明するようにしてください *ここに、私が反対の角を意味する例があります: 明確化: 入居できませんdiagonal 同じパスで2回渡すことはできません たinaccessible areas許可されています あなたはgo up/down連続して複数のレベルにすることができます チップ: それらを壁として見るのではなく5x5x5、それらのいくつかが欠落している正方形のスタックとしてそれらを見て、欠落しているものを通過することができます


8
ASCIIルーラーの生成
課題は、ASCII文字カウントルーラーを次の形式で生成することです。 +-------------------------------------------------------------------------+ || | | | | | | | | | | | | | | | |0 10 20 30 40 50 60 70 | | | +-------------------------------------------------------------------------+ ルーラーの長さは、10の倍数までスケーラブルでなければなりません。 ルール: 定規は水平でなければなりません。 物事を簡単にするために、ルーラーは、1000マーク、すべての数字が左揃え、最後の数字の1スペース後まで動作する必要があるとしましょう。 長さゼロの定規を要求すると、NaRが出力されます。 負の数は、逆のルーラー(-90、-80、-70、...)を右揃えの数で、上記とまったく同じ形式で印刷する必要があります そして、コンソールに印刷するだけでいい 準備完了、ゴルフ!

3
そりパッキング問題
サンタのエルフは、プレゼントの現在のバッチがサンタのそりに収まるかどうかを判断するのに助けが必要です。彼らを助けるために、あなたが選んだ言語で可能な限り短いプログラムを書いてください。 制約 サンタのそりは、幅6フィート、長さ12フィート、深さ4フィートです。 プレゼントは壊れやすい可能性があるため、互いに積み重ねることはできません。 プレゼントは好きなように回転させたり反転させたりすることができますが、サンタはかなり強迫観念に満ちているので、回転を90度の倍数に保ちます。 ノースポールの健康と安全の規制では、プレゼントがそりの上から1フィートを超えて突き出てはならない(したがって、高さが5フィートを超えてはならない)と規定されています。 入力 入力はオンにSTDINなり、バッチ内のプレゼントの数を表す1つの整数に、プレゼントの次元のリストが続きます-1行に1つ、スペースで区切られた3つの次元(フィート単位)。 例: 1 6 12 5 6 1 12 3 1 12 4 1 12 1 1 12 5 1 12 3 1 12 5 1 4 3 13 1 6 12 6 出力 プレゼントをそりに詰め込める場合は「YES」、できない場合は「NO」と出力する必要があります。 上記の例の出力: YES YES NO NO テストスクリプト 前と同じように、JoeyとVenteroによって書かれたいくつかのテストスクリプトを使用して、このタスクのテストを作成しました。 バッシュ …
11 code-golf 

13
Hello World Rainbow
非マークアップ言語で色を扱うことは、多くの場合、物事を複雑にします。さまざまな言語で色がどのように使用されるかについて、いくつかのバリエーションを確認したいと思います。 このコンペティションの目的は、「Hello World」を七色の虹で出力することです。 ウィキペディアによると、これらは7色です。 Red #FF0000 (RGB: 255, 0, 0) Orange #FF7F00 (RGB: 255, 127, 0) Yellow #FFFF00 (RGB: 255, 255, 0) Green #00FF00 (RGB: 0, 255, 0) Blue #0000FF (RGB: 0, 0, 255) Indigo #6600FF (RGB: 111, 0, 255) Violet #8B00FF (RGB: 143, 0, 255) ルール プログラムは「Hello World」を出力する必要があります。(必ずしもテキストである必要はありませんが、「Hello World」として識別できる必要があります) …

1
ミンスキーレジスタマシンのシミュレーション(II)
これはSimsky a Minsky Register Machine(I)の拡張です。私はそこですべての説明を繰り返すつもりはないので、まずその問題の説明を読んでください。 部分(I)の文法は可能な限り単純でしたが、かなり長いプログラムになります。これはコードゴルフサイトであるため、ゴルフの文法が必要です。 高レベルでは、元の文法からの変更は次のとおりです。 最初の行のラベルはオプションです 2つの隣接する識別子を分離する必要がある場合を除き、空白はオプションです 状態はインライン化できます。曖昧さのない構文解析を保証するために、デクリメント操作の最初の状態がインライン状態の場合、括弧で囲む必要があります。これは、どのプログラムでもワンライナーにゴルフできることを意味します。 たとえば、元のテストケースでは次のとおりでした。 b + = a、t = 0 init : t - init d0 d0 : a - d1 a0 d1 : b + d2 d2 : t + d0 a0 : t - a1 "Ok" a1 : a + a0 …

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