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

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

7
雨が降っていますか?わからない
これらは雨滴です: ! | . " : これらは雲の粒子です: ( ) _ @ $ & テキストのブロックが与えられたときに、雨が降っているかどうかを確認してほしい。すべての雨滴について、その上のどこかに雲の粒子がある場合、雨が降っています。雨粒ごとに1つの雲の粒子がなければなりません。あなたの結論を示す真実または偽の値を出力します。 有効な例 (@@@@@@) ( $ & ) Q ( ) .. . ! : . |" ! . ()()() ...... @_$ & errrr h_r-5 .:. . " 無効な例 ! () $$$$$ ( ) ::::: ..... これはコードゴルフなので、キャラクターの中で最も短いプログラムが勝ちます。

2
ポンのアスキーゲーム
アスキーポン 課題は、古典的なゲーム「ピンポン」を可能な限り短いコードでASCII文字で再現することです。 要件/仕様 「画面」は45x25文字にする必要があります。 空白は実際には空白でなければなりません。 パドルは9つの等号=========である必要があります。また、一番上と一番下の行にある必要があります(オリジナルは上から下ではなく左右に再生されることはわかっていますが、これはアスキーポンに適しています。 )。 ボールは、小文字、大文字、oまたはゼロにすることができます。 任意の種類の2つの入力ボタン(ユーザーが入力に文字を表示するキーを押しても問題ありません)は、プレーヤーのパドルを1つまたは2つのキャラクターを左右に一度に移動します。 ボールは、パドルや壁に当たったときに適切な角度で跳ね返る必要があります(ヒント:xまたはyの差の値を無効にします)。 スコアは出力のどこかに表示されます。スコアは、プレーヤーがボールを正常に打った回数です。 ボールがプレーヤーのパドルに当たらない場合は、プログラムを終了してください。 なければならないいくつかの AIの並べ替え(AIのパドルがちょうどボールのx値と一致した場合でも)。 ボールは垂直または水平に直線で移動できません。 開始画面/最初のフレームは次のようになります。 ========= o ========= score: 0 スコアリング これはコードゴルフなので、最短のコードが勝ちます...しかし、キャラクター数を減らすためにいくつかのボーナスがあります: -30キャラクター:パドルのどこに当たるかによってボールの弾道を変更 -10キャラクター:時間の経過とともにゲームをスピードアップ -20文字:AIを打ち負かす -20キャラクター:プレーヤーが静止し、勝ったり負けたりせずにゲームが永遠に続くような状況は避けてください(特定の軌道とAIパターンが原因) -20文字:ボールを(半)ランダムな軌道で動き始めます -25文字:リセットオプションを追加 以下は、JavaScriptにボーナスがない、ゴルフではない例です。 //init var x = 22, y = 12, xd = Math.random() < 0.5 ? -1 : 1, yd = 1, …

7
べき等でないPython [終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、 Code Golf Stack Exchangeのトピックとなるようにします。 4年前休業。 次のXようなグローバル変数を参照しない数行のPythonコードを記述します。 def method(): X print(a) method() 印刷します1が def method(): X X print(a) method() プリント2。 だから、私は厄介者になるのが嫌いですが、それは実際にはPythonのグローバル変数のようでvarsあり、locals def test_global_1(): global vars, locals vars = lambda: 2 locals = lambda: 3 def test_global_2(): print(vars()) print(locals()) test_global_1() test_global_2() また、このようなパズルの客観的な勝利基準を見たいと思うようです。コードの長さはここでは実際には感じられないので、コードのさまざまな新機能のためにブラウニーポイントのシステムを作成できますか?これらが何であるかは正確にはわかりませんが、ここから始まります: 本当に本当にないグローバル(+1 varsまたはlocals)の+1 特定のテクニックを最初に投稿したことに対する+1 投稿された最短のソリューションの+1 +1は、単一のPythonステートメントのみを含むソリューションの場合 字句の非境界に参加するなどの興味深い「ハック」の+1 例外を使用しない場合は+1 …

26
バランスを保ちながらゼロに最も近いN個の数
目的:正の整数が与えられた場合n: n奇数の場合、昇順でn最も近い数値のリストを出力します0 nが偶数の場合、Falsey値を出力します。 テストケース: 5 -> [-2,-1,0,1,2] 4 -> false (or any Falsey value) 1 -> [0] リファレンス実装 function update(){ var num = +document.getElementById("yield").value; if(num){ var out = document.getElementById("output"); if(num % 2 == 1){ // base is balanced var baseArr = []; for(var i=0;i<num;i++){ baseArr.push(i-Math.floor(num/2)); } out.innerHTML = baseArr.join(" "); …

8
英国の旗を印刷してください!
アメリカの国旗をプリントすることからインスピレーションを得た!これは直接のコピーですが、いくつかの対称性があるため英国の旗が付いていますが、それでもかなり複雑です! 課題は、次のASCIIアートをできるだけ少ないバイト数で作成することです。頭/画面(両方ではありません!)を90度回転させて正しく表示します。 __________________________________________ |\ \XXXXXXXXXXXX 000000 XXXXXXXXXXXX//0/| |0\ \XXXXXXXXXXX 000000 XXXXXXXXXXX//0/ | |\0\ \XXXXXXXXXX 000000 XXXXXXXXXX//0/ | |\\0\ \XXXXXXXXX 000000 XXXXXXXXX//0/ /| |X\\0\ \XXXXXXXX 000000 XXXXXXXX//0/ /X| |XX\\0\ \XXXXXXX 000000 XXXXXXX//0/ /XX| |XXX\\0\ \XXXXXX 000000 XXXXXX//0/ /XXX| |XXXX\\0\ \XXXXX 000000 XXXXX//0/ /XXXX| |XXXXX\\0\ \XXXX 000000 XXXX//0/ /XXXXX| |XXXXXX\\0\ \XXX 000000 …

15
7 l8rは9よりもですか?(7は9より遅いですか?)
これはかなり単純なコードゴルフの挑戦です。ASCII文字列が与えられたプログラムは、その文字列を2つの文字列に解析し、評価します。2番目の文字列が最初の文字列より「遅い」場合は1を返し、最初の文字列より「早い」場合は-1を返し、同じ場合は0を返します。 「後」と「前」の意味を明確にして、ASCII文字コードを見てみましょう。文字列の各文字を比較し、それぞれを数値の数字として扱う必要があります。後で大きい数を指し、小さい数の後に発生します。文字列は、2つの入力グループを区切るためにハイフン文字でフォーマットされます。 この例を見てみましょう: 7-9入力として返す必要があり1ます。 7ASCIIコード55に変換し、ASCIIコードに9変換します57。 57数値の後に発生し55、9後でより7。 もう一つの例: LKzb-LKaj 入力として返されるように -1 このためのASCIIコードシーケンスは76-75-122-98、76-75-97-106 これはコードゴルフチャレンジであり、バイトカウントはエントリのスコアリング方法です。 スペースとハイフンを除いて、95の印刷可能なASCII文字からのすべての入力が受け入れられます。また、文字列が同じ長さであるとは限りません。 幸運を! 編集:より明確にするために、各文字は数字の数字のように扱われます。この例LKzb-LKajでjはb、zはより遅いa、より遅いであり、より有効な数字であるため、優先されます。提供される文字列は常に3文字以上であり、空の文字列はこの問題の範囲から除外されます。 編集:あなたの助けのために、ここにいくつかのテストケースがあります: A-9 -> -1 11-Z -> -1 3h~J*-3h~J* -> 0 Xv-Y0 -> 1

3
超音速ドミノタイル
仕事 三つの整数読み取りプログラム書き込みmは、nは STDINから、またはコマンドライン引数のいずれかとして、寸法の矩形のすべての可能なタイル貼りの印刷N×M個により2×1及び1×2ドミノ、最終的に有効なタイリングの数。 個々のタイリングのドミノは、2×1の-場合は2つのダッシュ(|)、1×2ドミノの場合は2つの垂直バー()で表す必要があります。各タイリング(最後のタイリングを含む)の後にはラインフィードが必要です。 スコアリングの目的で、STDINから、またはプログラムが有効なタイルの数のみを印刷し、タイル自体は印刷しないようにするコマンドライン引数としてフラグを受け入れる必要もあります。 プログラムは1024バイト以下にする必要があります。m× n≤64のようなすべての入力に対して機能する必要があります。 (4x6長方形のすべてのドミノタイルを印刷することに触発されています。) 例 $ sdt 4 2 ---- ---- ||-- ||-- |--| |--| --|| --|| |||| |||| 5 $ sdt 4 2 scoring 5 得点 スコアは、フラグが設定された入力8 8に対するプログラムの実行時間によって決まります。 これを最速のコンピュータチャレンジではなく最速のコードにするために、すべての提出物を自分のコンピュータ(Intel Core i7-3770、16 GiB PC3-12800 RAM)で実行して公式スコアを決定します。 コードをコンパイルまたは実行する方法の詳細な手順を残してください。言語のコンパイラ/インタプリタの特定のバージョンが必要な場合は、その旨を表明してください。 以下の場合、私は提出物にスコアを付けないままにする権利を留保します。 私のオペレーティングシステム(Fedora 21、64ビット)用の無料の(ビールのような)コンパイラ/インタープリタはありません。 私たちの努力にもかかわらず、あなたのコードは機能しないか、私のコンピューターで正しくない出力を生成します。 コンパイルまたは実行には1時間以上かかります。 コードまたは利用可能な唯一のコンパイラ/インタープリタには、システムコールrm -rf ~または同様に魚のようなものが含まれています。 リーダーボード コンパイルと実行の両方を、コンパイルでは10,000回、実行では(コードの速度に応じて)100から10,000回のループで実行し、平均を計算して、すべての送信を再評価しました。 …

3
ランダム化されたBrainfuckコンパイラ
Joeは平均的なBF開発者です。彼は上司から電話を受けたときに、リポジトリへのコードの変更をチェックインしようとしています。「ジョー!新しいクライアントのマシンが壊れています!ブレインファックインタープリターは、プログラムの実行前にすべてのセルをランダムな値に設定します。修正する時間がないので、コードで処理する必要があります。」ジョーはそれについてはあまり考えていません。上司が再び彼に割り込んだときに、最初の100万個のセルをゼロに設定するプログラムを書こうとしています。できるだけ小さくしてください。」今、あなたは貧しいジョーを助けなければなりません! 仕様書 あなたは入力としていくつかの有効なbrainfuckコードを取得します プログラムはコードを変更して、ランダム化されたbrainfuckインタープリターで機能するようにします つまり、プログラムを実行する前に、セルを任意の値に設定できます。 新しいプログラムは、初期条件に関係なくまったく同じ動作をする必要があります。 インタープリターは、ラッピングを含む最大セル値が255で、テープの長さが無限になります。 得点 あなたのスコアは、10回のバイト単位でのコンパイラのサイズに加えて、テストケースのサイズの合計。最も低いスコアが勝つことは明らかです。テストケースの最適化を緩和するために、疑わしい場合はテストケースを変更する権利を留保しており、おそらく勝者を選ぶ前に変更します。 テストケース (私はesolangsページとこのWeb ページからこれらを入手しました:http : //www.hevanet.com/cristofd/brainfuck/)。最後のテストケースについては@Sparrにも感謝します。 こんにちは世界: ++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++. 逆入力: >,[>,]<[.<] 2の累乗(無限ストリーム): >++++++++++>>+<+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<]>.>[->[ <++>-[<++>-[<++>-[<++>-[<-------->>[-]++<-[<++>-]]]]]]<[>+<-]+>>]<<] 10000未満の正方形: ++++[>+++++<-]>[<+++++>-]+<+[>[>+>+<<-]++>>[<<+>>-]>>>[-]++>[-]+>>>+[[-]++++++>>>]<<<[[<++++++++<++>>-]+<.<[>----<-]<]<<[>>>>>[>>>[-]+++++++++<[>-<-]+++++++++>[-[<->-]+[<<<]]<[>+<-]>]<<-]<<-] フィボナッチストリーム: >++++++++++>+>+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<<]>.>>[[-]<[>+<-]>>[<<+>+>-]<[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>[-]>+>+<<<-[>+<-]]]]]]]]]]]+>>>]<<<] 入力までのASCIIシーケンス:(,[.[>+<-]>-]これは入力に基づいてさまざまなセル番号を必要とします)

11
ソフィージェルマンの素数を一覧表示する
質問 A ソフィージェルマン素数が素数であるPよう2P + 1も素数です。たとえば、23も素数であるため、11はソフィージャーマン素数です。ソフィージェルマンの素数を昇順で計算する最短のプログラムを書く ルール Sophie Germain素数は、外部ソースからではなく、プログラムによって生成される必要があります。 プログラムは、2³²-1未満のすべてのソフィージェルマン素数を計算する必要があります プログラムが見つけたソフィージャーメインプライムをそれぞれ印刷する必要があります。 最もスコアの低い人が勝つ 得点 コードのバイトあたり2ポイント -10(プログラムによって生成された素数が2³²-1より大きい場合)

6
可変長ハッシュを実装する
私の友人と私は言葉で遊ぶこのゲームを持っています。それは楽しい娯楽であり、言葉がなくなるまで文字を「キャンセル」することを含みます。私は彼が私よりもはるかに速いことに本当にうんざりしているので、それを実装して私が最終的に彼を倒すのはあなたの仕事です。明らかに、プログラムをできるだけ簡単に隠す必要があるので、できるだけ小さくする必要があります。 このゲームはどのように機能しますか? ゲームはかなり単純なアルゴリズムです。アルファベット文字列は、それ以上削減できなくなるまで削減され、一種のハッシュになります。私たち人間が行う実際のゲームは実装が非常に困難ですが、次のアルゴリズムに簡略化できます。 まず、アルファベットを半分に折りたたみ、次のように2つの部分を並べます。 a b c d e f g h i j k l m z y x w v u t s r p q o n 次に、中央から始めて、正の整数を上半分に、負の整数を下に割り当てます。 a b c d e f g h i j k l m 13 12 11 10 9 8 …

7
今週の4年生の数学の宿題:最も非効率的な出張セールスマン
私の娘は数学の宿題のために次のような割り当てがありました。E、F、G、H、J、Kという名前のラインに住んでいる6人の友人を想像してください。ライン上の彼らの位置は、以下に示すとおりです(縮尺どおりではありません)。 したがって、FはEから5ユニット、Gから2ユニットというように住んでいます。 あなたの課題:友達の位置とnを入力として、合計nユニットで各友達を1回だけ訪問するパスを特定するプログラムを作成します。見つかった場合はパスを報告する必要があります(たとえば、長さが17の場合は「E、F、G、H、J、K」を報告する可能性があり、解決策が存在しない場合は正常に終了する必要があります。 Mathematicaでの非推奨のソリューションであり、271バイトです。それよりもずっと簡潔に実行できると思います。

6
1000桁以上の数字から最小周期を見つける
あなたの仕事は、この数値を入力として受け取ることです(他の数値でも機能するはずです)。 18349570345710975183495703457109751834957034571097518349570345710975183495703457109761834957034571097518349570345710975183495703457109751834957034571097518349570345710976183495703457109751834957034571097518349570345710975183495703457109751834957034571097618349570345710975183495703457109751834957034571097518349570345710975183495703457109761834957034571097518349570345710975183495703457109751834957034571097518349570345710976183495703457109751834957034571097518349570345710975183495703457109751834957034571097618349570345710975183495703457109751834957034571097518349570345710975183495703457109761834957034571097518349570345710975183495703457109751834957034571097518349570345710976183495703457109751834957034571097518349570345710975183495703457109751834957034571097618349570345710975183495703457109751834957034571097518349570345710975183495703457109761834957034571097518349570345710975183495703457109751834957034571097518349570345710976183495703457109751834957034571097518349570345710975183495703457109751834957034571097618349570345710975183495703457109751834957 そして、この場合、最小周期を見つけます: 1834957034571097518349570345710975183495703457109751834957034571097518349570345710976 頑張って楽しんでね! 明確化: 入力番号には、少なくとも1つの期間と1つの部分期間があります 期間は常に入力番号の先頭から始まります ピリオドとは、この場合、それ自体を繰り返す一連の数字を意味します。
10 code-golf 

11
テキストファイルの17番目ごとのビットを1にするプログラムを記述します。
私の同僚と私は、時々嫌うレガシーソフトウェアに取り組んでいます。実行するたびに、デバッグアサートがどこにでも飛んでくるので、何かが機能するという保証はありません。このコードゴルフラウンドの動機は、同僚がソフトウェアについて次のように述べたことにあります。 「このプログラムを実行するたびに、ハードドライブの17番目のビットがすべて1に変わると言ういくつかの利用規約に同意しているようです」 目標:ファイルの正確なコピーを作成し、テキストファイルの17番目ごとのビットを1にするプログラムを作成する あなたはありませ回しEVERYのそれだけですべての17ビットをターゲットにしていることをいくつかの知性を示さなければなりません。1.つまり、あなたのプログラムにファイルのビットを あなたはありませ一切の形状または形態で、元のファイルへの書き込み 受賞者は、月末の最小のプログラムの提出であります これを楽しんでください!行こう!

3
これらは私のラッキーダイスです[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、 Code Golf Stack Exchangeのトピックとなるようにします。 2年前休業。 ロールプレイングゲームの一般的なサイコロをシミュレートするプログラムまたは機能を実装します。少なくとも2つの最も一般的なサイコロであるd6とd20を処理する必要があります。 ただし、ステレオタイプのゲーマーが期待どおりに機能するはずであり、実際のサイコロの動作としては機能しません。 これはゲーマー間の冗談であり、非常に重要なロールに特別に幸運なサイコロを振ることができます。以前にたくさんのサイコロを投げ、「1」になったサイコロを選択してから、再び手に入れるまで「1」を複数回振ったいくつか。その後、それらは1を順番に複数回振ったので、それらを慎重に保存します。したがって、次に1を振る確率は非常に低くなるはずです。 もちろん、ロールは統計的に独立しているため、これは実際のサイコロの動作とは異なります。 シミュレートされたダイスは、以前のロールを考慮に入れ、ギャンブラーの誤解におけるギャンブラーが期待どおりに動作するように機能する必要があります。たとえば、多数の低い数字が出た場合、高い数字を出せる確率を高くする必要があります。 ただし、これは不正行為であるため、よく隠す必要があります。これは、プログラムを少し見ただけで、あなたが不正行為をしたことを明らかにしてはならないことを意味します。つまり、以前の結果を明示的に保存し、スローするたびにそれらを読み取ることは、疑わしいことになります。サイコロのこの「プロパティ」を非表示にする必要があり、それをもっともらしい否認可能にして正直な間違いに偽装する場合はボーナスポイントを獲得する必要があります。(たとえば、「意図しない」欠陥で独自のRNGを作成します) 有権者は、この「欠陥」がどれほど隠されているかを考慮に入れてください。 プログラムは明確で、難読化されていない必要があります。難読化されたプログラムで悪質なコードを隠すのは簡単すぎます。

2
ロボット!これらの漬物を集めてください!
少し漬け物になっているようです。文字通り。たくさんの漬物を床に落としました、そして今、それらはすべて散らばっています!それらすべてを集めるのを手伝ってほしい。ああ、私は自分の命令でたくさんのロボットを持っていると言ったのですか?(また、それらはすべてあちこちに散在しています。私は物事を整理するのが本当に苦手です) 次の形式で入力する必要があります。 P....... ..1..2.. .......P ........ P3PP...4 .......P すなわち、いずれかの複数の行.、P(漬物)、または数字(ロボットのID)。(各行は同じ長さで、が埋め込まれて.いると想定できます。)これらの行を配列として入力するか、STDINから丸呑みするか、コンマ区切りの単一行で読み取るか、ファイルを読み取るか、または何でもできます入力を受け取りたい。 出力は行の形式である必要があります。nここnで、は最大のロボットIDです。(ロボットIDは常に1から始まります。)各行には、L(左)、R(右)、U(上)、D(下)の文字で構成されるロボットのパスが含まれます。たとえば、そのパズルの出力例は次のとおりです。 LLU RDR LRRR D それもすることができます LLU RDR LRRR D または ["LLU","RDR","LRRR","D"] または、ソリューションが何であるかを理解できる限り、任意の形式を使用できます。 あなたの目標は、最小のステップを持つ最適な出力を見つけることです。歩数は、すべてのロボットの最大歩数としてカウントされます。たとえば、上記の例には4つのステップがあります。複数のソリューションがある場合がありますが、出力する必要があるのは1つだけであることに注意してください。 得点: プログラムは、5つの(ランダムに生成された)テストケースのそれぞれで実行されます。 各実行からステップを追加する必要があり、それがスコアになります。 最も低い合計、累積スコアが勝ちます。 これらの特定の入力をハードコードすることはできません。コードは他の入力でも機能するはずです。 ロボットはお互いを通り抜けることができます。 プログラムは確定的でなければなりません。つまり、すべての実行で同じ出力になります。シードされ、一貫してクロスプラットフォームで同じ数値を生成する限り、乱数ジェネレーターを使用できます。 コードは、各入力に対して3分以内に実行する必要があります。(できればはるかに少ない。) 引き分けの場合、ほとんどの賛成票が勝ちます。 ここにテストケースがあります。それらは私が書いた小さなRubyスクリプトでランダムに生成されました。 P.......1. .......... P.....P... ..P....... ....P2.... ...P.P.... .PP..P.... ....P....P PPPP....3. .P..P.P..P ....P..... P....1.... .P.....PP. .PP....PP. .2.P.P.... ..P....P.. .P........ …

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