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

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

5
あなたの土地はどれくらい素晴らしいですか?
この課題では、土地の大きさを計算します。 構築した壁を考慮して、土地のサイズを計算するプログラムまたは関数を作成します。「上」、「下」、「左」、「右」の4つの方向を表す、選択した4つの異なる文字のセットを含む空でない入力文字列が与えられます(^ v < >このチャレンジで使用します)。180度回転(<>または^v)することはできませんが、壁を越えることができます。 土地を「キャプチャ」する方法は、土地を壁で囲むことです。壁自体もあなたの土地の一部とみなされます。いくつかの例を使用すると、より明確になります。私が使用しますo、壁に囲まれた土地のためにx壁自体のために、そしてS壁の開始点のために、ちょうど壁が構築されている方法を説明します。出力は、土地の合計サイズ(の数o、xおよびS以下のテストケース)である必要があります。 Input: >>>> Land: Sxxxx Output: 5 Input: <<<^^^>>>vv Land: xxxx xoox xoox xxxS Output: 16 Input: <<<^^^>>>v Land: xxxx x x x xxxS Output: 11 Input: < Land: xS Output: 2 Input: >>>>>>vvvvvvvvv<<<<<^^^^>>>>>>>>vvvvvvvvvv<<<<<<<<<<<<<<<^^^^^^^^^>>>vvvvvv<<<<< Land: Sxxxxxx x x x x xxxxxxxxx xxxx xoooox x xoox …

23
小数を取得します!
仕事: あなたの仕事は、3つの入力が与えられたときです: 分子 n 分母 d 別の整数、 x x小数点以下の数値のth桁を見つけるプログラム/関数を作成します。 仕様: nand の範囲は、dとの間に1あり2^31 - 1ます。 範囲は、x間にある1と10,000,000、包括的。 に1ベースのインデックス付けを使用するか、0ベースのインデックス付けを使用するかを選択できますx。どちらを使用しているのか答えてください。 nはより大きい場合がありdます。 n、dおよびx正の整数であることが保証されている(の1ベースのインデックスのバージョンのxためにあなたが使用することを選択した場合は、インデックスを0ベースx、その後x可能0)。 合理的な方法で入力を行うことができます(つまり、標準的な抜け穴ではない任意の方法)。 ルール: x丸められたときではなく、正確なth桁を返す必要があります。たとえば、の15th桁は1/6ではなく7、です6。 あなたのx言語が1000万桁までの小数をサポートしていない場合を除き、プログラムは1000万未満すべてで動作する必要があります。 I / Oの例: 入力例では0から始まるインデックスを使用xし0てい9,999,999ます。つまり、からになります。それに加えて、「入力」は、数字を区切るスペースを含む文字列として書き込まれます。 1 2 3: 0 5 6 0: 8 5 6 1: 3 1 6 15: 6 (not 7, as it's not rounded) 1 11 …
23 code-golf  math 

14
コードを再利用してください!
この課題では、2つの重要な問題を一度に解決しようとします。彼らです: 整数aおよびbを指定すると、a b -1が素数であるかどうかがわかります。 整数aおよびbを指定すると、nCr(a、b)を返します。 具体的には、2つのプログラムを作成する必要があります。1つは最初のタスクを実行し、もう1つは他のタスクを実行します。両方の問題を一度に解決したいので、両方のプログラムで同じコードを使用することをお勧めします。 得点 回答のスコアは、2つのプログラム間のレーベンシュタイン距離です。スコアが低いほど優れています。同点の場合、2つのプログラムの最短の組み合わせコードでの答えが勝ちです。このスクリプトを使用して、ソリューションのスコアを計算できます。 ルール 上記のタスクを解決する2つのプログラムを同じ言語で作成する必要があります。任意のI / Oメソッドを使用できます。タスク1では、真偽値を返すか、2つの値を選択してtrueとfalseを意味し、それに応じて返すことができます。例えば。あなたはそれが"prime"真を"not prime"意味し、偽を意味することを選ぶことができます。 使用するアルゴリズムは、可能なすべての入力に対して機能する必要がありますが、使用される数値タイプの制限のために大きな数値に対してコードが失敗しても問題ありません。入力が有効であると想定できます。 プログラムのどのサブセットも問題を解決してはなりません。文字が削除された場合、コードは機能しません。たとえば、次のコードは無効です。プログラムを中断せずに未使用のelse-blockを削除できるためです。 if (1) { /* change to 0 to get the second program*/ ... } else { ... } 標準の抜け穴は許可されていません。 テストケース a b -1は素数ですか? a b 1 1 false 2 3 true 5 2 false 2 …

1
フィボナッチカーネルを見つける
あなたはおそらくフィボナッチ数を聞いたことがあるでしょう。彼らはかなり有名です。フィボナッチ数列の各数は、数列の最後の2つの合計で、最初の数と2番目の数は1です。数列は次のようになります。 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 701408733 1134903170 1836311903 2971215073 4807526976 7778742049 …

2
チェス盤を脱出する
自分がチェス盤に乗っているのを見つけます。あなたは出口を見ることができますが、それはひどく遠くにあり、あなたはむしろずっと歩きたくないでしょう。幸いなことに、地元の人たちがあなたに乗車を申し出ています。騎士、ルーク、司教、王は皆あなたを目的地に連れて行きますが、これがチェス盤であることを見て、目的地に向かう途中でチェスのルールを順守しなければなりません。できるだけ早くここから出たいと思いますが、誰の申し出を受け入れますか? 仕事 任意の形状とサイズのチェス盤とチェス盤上の2つのポイントが与えられた場合、できるだけ少ない移動で2つの場所の間を移動できるチェスの駒を出力します。取締役会は必ずしも継続的ではなく、取締役会のセクション間にギャップがある可能性があることを意味します。4つのピース(キング、ルーク、ナイト、ビショップ)はそれぞれ、チェスの標準ルールに従って移動できます。クイーンとポーンの駒は、この挑戦​​から意図的に除外されています。 I / O 任意の合理的な形式で入力を受け付け、選択した任意の形式で出力することもできます。入力と出力は一貫したものでなければなりません。複数のピースが同じ移動数で目的地に到達できる場合、最短時間でそこに到達できるすべてのピースを出力する必要があります。4つの部分のいずれも最後まで到達できない場合、他のすべての可能な出力とは異なる限り、何でも出力できます。これには、何も出力しないか、エラーをスローすることが含まれます。 テストケース 正方形は開始点を示し、円は終了点を示します。 司教 騎士 キング ルーク キング、ナイト なし
23 code-golf  chess 

14
Hot Wheels車はどのくらいの速度ですか?
数年前、Hot Wheelsは「Formula Fuelers Racers」と呼ばれるシンプルなフラッシュゲームを作成しました。ゲームをプレイするには、冷蔵庫から3つの材料を選択して車に入れ、コンピューターのランダムに生成された車と競います。このゲームの仕組みは非常にシンプルであることがわかりました。まず最初に、あなたの車の実際のレース「時間」はランダムに生成され、あなたがレースに勝ったかどうかには関係ありません。第二に、レースの勝者は、選択された材料から計算されるスコアによって決定されます(重複した材料は許可され、順序が重要です)。各成分には、次の表に示すように、関連する「値」と関連する「操作」があります。 # ingredient val op 1 Hot Salsa 2 + 2 Root Beer 1 + 3 Milk 1 + 4 Pickle Juice 2 + 5 Mystery Lunch -3 * 6 BBQ Sauce 2 + 7 Egg 1 + 8 Ketchup 2 + 9 Mustard -1 * 10 …

7
カメラを回転させます。宇宙飛行士を救う
注:The Martianのマイナーネタバレはこの課題にあります。注意して先読みしてください 火星人は、火星に偶然立ち往生した宇宙飛行士であり植物学者でもある並外れたマーク・ワトニーについてのSF小説です。本のある時点で、マークはNASAと通信しようとしますが、彼らが持っている通信の唯一の手段はカメラです。マークはインデックスカードに書き込むことでメッセージを送信します。NASAはカメラを360度回転させることができるため、NASAはカメラを「はい」または「いいえ」とラベル付けして返信します。 NASAが送信できる唯一のデータはカメラが向いている方向であるため、Markはアルファベット文字のあるカードをポイントしてメッセージを入力できるシステムを考え出します。しかし、文字「az」を使用することは実用的ではありません。この本を引用するには(この回答から、scifi.seに): 30分ごとにyes / noの質問よりも速く話す必要があります。カメラは360度回転でき、アンテナパーツがたくさんあります。アルファベットを作る時間。しかし、文字AからZだけを使用することはできません。26文字と質問カードは、着陸機の周りの27枚のカードになります。それぞれがたった13度の円弧を取得します。JPLがカメラを完璧に向けたとしても、どの文字が意味するのかわからない可能性があります。 したがって、ASCIIを使用する必要があります。それがコンピューターがキャラクターを管理する方法です。各文字には0〜255の数値コードがあります。0〜255の値は2桁の16進数で表現できます。16進数のペアを渡すことで、数字や句読点など、好きな文字を送信できます。 ... そこで、0から9、およびAからFのカードを作成します。これにより、カメラの周りに16枚のカードと質問カードが配置されます。17枚のカードはそれぞれ21度以上を意味します。対処がはるかに簡単です。 NASAのトップソフトウェアエンジニアの1人としての今日の目標は、カメラのさまざまな角度をエンコードするプログラムを作成することです。マークが指し示す17枚のカードは次のとおりです(順番に)。 ?0123456789ABCDEF これらのカードはそれぞれ21度離れているため、カメラをから?に0回転するには、カメラを21度回転し、2to 1を-21度回転する必要があります。(それはないです正確に 21、私たちはそれをシンプルに保つために丸めます)soから行くために、このラップをFすることは3105度(5ターン、5 * 21 = 105)です。これは、カメラが遠くまで移動する必要がないため、-252よりも効率的です。 プログラムまたは関数が行う必要があることは次のとおりです。 入力として文字列を受け取ります。この文字列をsと呼びます。単純にするために、入力は印刷可能なASCIIのみになります。この例では、入力がSTATUS 各文字を16進表現に変換します。これはに変換さSTATUSれ53 54 41 54 55 53ます。 各カードを指し示して「質問カード」に戻るために、カメラが行う必要のある連続した学位の回転を印刷または返す。この例では、これは次のようになります。 6 * 21 = 126 (?-5) -2 * 21 = -42 (5-3) 2 * 21 = 42 (3-5) -1 * 21 = …

28
長い列に立ち向かう
最近、誰かがPythonのデフォルトの行長により厳しい制限を提案しました: 明らかに、多くの理由から、プログラムは1行あたり80文字を超えて使用してはなりません。何よりもまず、読みやすさと保守性のために、堅実な標準を持つことが重要です。そのため、テキストエディターの幅を適切に調整できます。副次的な利点として、制限のあるメディアにコードを簡単に転送できます。また、会議でのレビュー用の印刷ページやパンチカードなど、改行の追加が邪魔になることがあります。 しかし、80文字は高すぎますか?80文字幅の端末を行番号専用の数列のコードに適合させるために、79、または75程度の低さを提案する人もいます。明らかに、最終的には、より低い制限のほうが、より多くの状況でコードを再フォーマットせずに使用できるようになるため、より良いです。 max6標準の紹介 あなたの目標は、任意の行の文字数が最も少ないFizzBu​​zzバリアントを作成して、お気に入りの言語に必要な最小行長を見つけて実証することです。 入力 任意の方法による整数n。 出力 1から番号を印刷N、(N ≥1、N ∈ℤ)改行で区切られた、除きます。 3の倍数の印刷「アップル」 5の倍数の印刷「パイ」 3と5の両方の倍数の「ApplePie」印刷用 得点 改行(Cr、CrLf、Lf、またはその他のシステム標準の区切り、必要に応じて指定)を含まない最大行長(バイト)、およびタイブレーカーとしての合計コード長(バイト)。 ルール すべての改行は意味のあるものでなければなりません。出力に影響を与えずに削除できる改行および隣接する行を直接連結する場合は、削除する必要があります。

9
ヒルバーツグランドホテル
前書き ヒルベルトグランドホテルのことを聞いたことがある人もいるかもしれません。マネージャーは、ゲストが滞在している場所のリストを失いましたが、まだチェックインした順番を持っています。各ゲストは、値よりも小さい部屋番号の客室に滞在することはできません。部屋、空いているスペースのない上位の部屋のすべてのゲストと新しいゲストは1部屋上に移動します。各ゲストが滞在している場所を見つけるのを手伝ってもらえますか? 必要条件 入力として自然数の順序付きリストを受け取り、それらをインデックスに配置するプログラムを作成します。そのインデックスに既に値が存在する場合、リスト内の次のエントリまでシフトされます。このプロセスは、最初の空の(0または未定義の)スペースが見つかるまで繰り返されます。現在の最高のインデックスと新しい入力との間の未定義のスペースは、0を追加することによって埋められます。これはヒルベルトのグランドホテルであるため、現在最も高い占有インデックスよりも高い部屋は存在しません。 入出力 入力は、自然数の順序付きリストになります(入力の受け入れられた形式を介して読み取ることができます)入力の 各数字は、1人のゲストがホテルに到着したと見なされ、到着順になります 出力は、ゲストの最終配置(番号)になります 例 入力: 1 3 1 出力: 1 1 3 ステップバイステップ: 1 インデックス1に部屋を作成し、その中に 1を配置1 0 3 インデックス3までの部屋を作成し、部屋3に3を配置 1 1 1 3 部屋1の内容を上にシフト1つの部屋と部屋1に1を配置 入力: 1 4 3 1 2 1 出力:1つの1 2 1 3 4 ステップバイステップ: 1は それにインデックス1と場所1の部屋を作成します。 1 0 0 4が 部屋にインデックス4と場所4部屋までの作成4 1 …

1
それはすべての要因です!
このチャレンジは、この素晴らしいアニメーション図に触発されています(チャットで投稿してくれたflawrに感謝します)。 input nを指定すると、指定されたように、すべての素因数をドットのネストされた多角形として描画します。 たとえば、番号を指定する357 = 17x7x3と、三角形に3つのドット、七角形にそれらの三角形の7つのバージョン、17角形にそれらの七角形の17のバージョンを配置します。要するに、外側の最大の素因数から内側の最小の素因数に向かうネストされたポリゴン。の場合357、あなたの答えは次のようになります(色の有無にかかわらず): すべての素数のすべてのポリゴンを>= 3ダイアグラムの周りで回転させないでください。 唯一の例外は2、特に奇数のべき乗の素数です2。376 = 47x2x2x2以下の例でわかるように、8sは回転し、sの単一行ではなく、正方形内のsの2垂直スタックです4。2正方形に配置されたの累乗でさえ、この方法で回転させる必要はありません。 実際に448 = 7x2x2x2x2x2x2は、64sの七角形のように見えるダイアグラムがあり64、正方形の正方形の正方形に配置されていますが、回転はありません。 さらに二つの例がある440 = 11x5x2x2x2と432 = 3x3x3x2x2x2x2。私たちは、ことがわかり4402の奇数力で、回転した8ものの、秒432の偶数乗と2その回転しない16のを。 そして最後に、10 = 5x2Pythonとそのturtleモジュールでモックアップした色のない最小限の例を示します。 チャレンジ 入力を指定nすると1 <= n <= 10000、ネストされた因子ポリゴンの画像を出力します。 ルールは次のとおりです。 画像は、外側に(最大の素因数)辺を持つ多角形から、内側にある最小素数要素まで、ネストされたドットの多角形で構成されています。 係数2の場合、2の累乗は線、次に正方形、次に正方形の線などとして積み重ねられます。2のべき乗でも回転させないでください。2の奇数乗は、それぞれのポリゴンを中心に回転し、回転する前に垂直に積み重ねる必要があります。 好きなように画像の向きを変えることができます(私は好みですが)が、入れ子になったすべてのポリゴンは、2の奇数乗を除いて他のポリゴンと同じ方向を向いている必要があります。 画像サイズとドットサイズには2つのオプションがあります。 画像サイズは静的で、ドットサイズnはアニメーションのように増加するにつれて減少します。 ドットサイズは静的で、画像サイズはn増加するにつれて大きくなります。 ポリゴンの最初の3つのレイヤーは、隣接するポリゴンと区別可能(つまり、接触していない)である必要がありますが、の周囲の画像のサイズを考慮するとn=10000、レイヤーが接触し始めても問題ありません。彼らがそうしなかったなら、私はそれを好むでしょうが、Stack Exchangeにアップロード可能な画像に収まることは避けられないかもしれません。 色はオプションです。 ドットの形はあなた次第です。正方形が言語に適している場合は、それらを使用します。 ボーナスはありませんが、元の投稿のように誰かが図をアニメーション化して色付けするのを見てみたいです。 この質問の執筆に協力してくれたConor O'Brien、EasterlyIrk、Martin Ender、Kritixi Lithos、Mego、DJ McMayhem、El'endia Starmanに感謝します。 このコードはゴルフなので、最短のコードが勝ちます。幸運と良いゴルフ!

14
バブルラップシミュレーターを作成する
バブルラップは、最高レベルのエンターテイメントです。誰もがそれに同意することができます。 これで、コンピューターでもプチプチを楽しむことができます。 スペック 2つの整数wとhが与えられます(それぞれが幅と高さに反応します) プログラムは、各フェーズの間に1秒待機するすべてのw * hフェーズを出力し、終了する必要があります。 すべてのバブルラップは、すべてのセルがいっぱいになると始まります。 たとえば、4 * 6のバブルラップは次のように始まります。 O_O_ _O_O O_O_ _O_O O_O_ _O_O また、各フェーズでは、ランダムな非ポップセルがポップされます。たとえば、 O_O_ _O_O O_X_ _O_O O_O_ _O_O すべてのセルがポップされると、プログラムは終了します。別名。 X_X_ _X_X X_X_ _X_X X_X_ _X_X 例 (4,6) (5,5) (6,2) (10,10) (7,9)

5
最速のホームプライムジェネレーター
ホームプライムとは何ですか? 例として、HP(4)を取り上げます。まず、素因数を見つけます。4の素因数(最小から最大の順、常に)は2、2です。これらの要素をリテラル数として取ります。2、2は22になります。素因数分解のこのプロセスは、素数に達するまで続きます。 number prime factors 4 2, 2 22 2, 11 211 211 is prime 素数に達すると、シーケンスは終了します。HP(4)= 211。14の長い例を次に示します。 number prime factors 14 2, 7 27 3, 3, 3 333 3, 3, 37 3337 47, 71 4771 13, 367 13367 13367 is prime あなたの課題は、与えられたxでHP(x)を計算するプログラムを作成し、できるだけ早くそれを行うことです。既知のホームプライムのリスト以外の任意のリソースを使用できます。 注意してください、これらの数値は非常に速く非常に大きくなります。x = 8では、HP(x)は3331113965338635107にジャンプします。HP(49)はまだ見つかりません。 プログラム速度はRaspberry Pi 2でテストされ、次の入力を平均します。 16 20 …

2
ASCIIヒルベルト曲線
整数n出力を与えられ、文字とを使用したASCII nでのヒルベルト曲線の th番目の反復。_| 以下に、最初の4つの反復を示します。 n=1 _ | | n=2 _ _ | |_| | |_ _| _| |_ n=3 _ _ _ _ | |_| | | |_| | |_ _| |_ _| _| |_____| |_ | ___ ___ | |_| _| |_ |_| _ |_ _| _ | |___| …

13
オーバーフロー防止バッファ
バックグラウンド 最近のプログラマーは、バッファーをまっすぐに保つことができないようです!エラーの一般的な原因は、バッファに対して大きすぎる配列インデックスを使用しようとしていることです。あなたのタスクは、大きなインデックスがバッファが処理できるサイズまで縮小されるバッファを実装することです。誰にとっても最適なものを私が正確に決定するので、このバッファを私の正確な仕様に合わせて実装します。 概要 要素が追加されるとサイズが大きくなる挿入専用バッファがあります。バッファにはゼロのインデックスが付けられ、現在のサイズを法としてインデックスが付けられます。このチャレンジの特別なルールは次のとおりです。 インデックスiにアイテムを挿入するということは、jを計算し、リストのj番目のアイテムのj = i % buffer.length()後に新しいアイテムを挿入することを意味します。 唯一の特殊なケースは、ゼロを法とする算術演算が機能しないため、バッファが空の場合です。したがって、バッファが現在空の場合、新しいアイテムはインデックス0になります。 バッファにアイテムが1つしかない場合、常に0番目のアイテムの後に挿入します。これは一般的なケースの1つの例にすぎません。 バッファは6つの項目が含まれている場合:[4, 9, 14, 8, 5, 2]あなたは、新しい項目を挿入するように指示され10たインデックスに15、あなたはそれを見つけ15 % 6 == 3、その後、新しいを挿入し10た後8、インデックスで3の結果のバッファを与えます [4, 9, 14, 8, 10, 5, 2] 問題 正の整数の順序付きリストと、それらを挿入する正の整数インデックスを受け取る関数またはプログラムを作成します。 空のバッファから始め、指定された整数を対応するインデックスのバッファに追加します。 指定されたすべての挿入が行われた後、バッファー内にある整数の順序付きリストを出力します。 これはコードとゴルフの課題であるため、最短のコードが優先されます。 入力ガイドライン 必要に応じて入力リストを取得できます。例: ペアのリスト: [ [1,1], [2,4], [3,9], [4,16], [5,25]...] アイテムリストとインデックスリスト: [1, 2, 3, 4, 5...], [1, 4, …
23 code-golf 

20
最大プライムパワーを見つける
素数の累乗は、n = p kの形式で記述できる正の整数nです。ここで、pは素数、kは正の整数です。たとえば、いくつかの主要な力はです。[2, 3, 5, 4, 9, 25, 8, 27, 125] 次に、2の主なべき乗を考えます。これらは[2, 4, 8, 16, ...]2 kの形式で記述できます。20未満の素数の累乗を考慮する場合、それらはすべて含まれます。ただし、16はその範囲内の2の基本素数を持つ最大素数の累乗です。プライムパワーp kは、その範囲内のpの最大パワーである場合、その範囲内で最大になります。各範囲の最大素数にのみ関心があるため、それより低いすべての素数を除外する必要があります。 あなたの目標は、正の整数nを取り、その範囲の最大素数を出力する関数またはプログラムを書くことです[2, 3, 4, ..., n]。 最大プライムパワーなどの定義を明確にしてくれた@ Peter Taylorに感謝します。 ルール これはコードゴルフですので、コードをできるだけ短くしてください。 最大の素数の力は、任意の順序で出力することもできるが、何の重複があってはなりません。 テストケース n result 1 [] 2 [2] 3 [2, 3] 4 [3, 4] 5 [3, 4, 5] 6 [3, 4, …
23 code-golf  math  primes 

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