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

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

5
5つの単純なプログラム間で文字を繰り返すことを避けます
あなたが挑戦しているのは、次の5つのタスクのために5つの異なる完全なプログラムを書くことです。 印刷する Hello, World! 入力がSTDINの場合、階乗を出力し、入力が0以上の整数であると仮定できます。 整数Nが与えられた場合、素数の合計<= N STDINで入力が与えられた場合、入力で使用された文字を出力します。たとえば、入力はHello world、出力する必要がありますhelowrd。出力は小文字であることに注意してください。入力は常に空白を含むアルファベットであり、空白は無視されると想定できます。 このように、次のダイヤモンドを出力します。 * *** ***** ******* ***** *** * これらすべての課題はおそらく非常に簡単ですが、キャッチがあります。使用するすべての文字を他のプログラムで再び使用することはできません。これは禁止されていませんが、+ 8バイトのペナルティが与えられます。たとえば、これが最初のタスクのプログラムである場合: print("Hello, World!"); そして、あなたは(大文字または小文字の形で)次の文字を使用することはできません:p、r、i、n、t、h、e、l、o、w、d他のプログラムインチ それらを使用する必要がある場合は、各文字を8バイトで「購入」できます。したがってl、別のプログラムでその文字を再度使用する場合、8バイトのペナルティが発生します。罰金を支払った後、このプログラムで必要なだけ各文字を使用できます。他のキャラクターは関係ありません。また、5つのプログラムはすべて同じ言語である必要があります。 これはcode-golfなので、最小バイト数が勝ちです!

2
ベータ版のスノーフレーク
チャレンジ 15/16シーズンには多くの場所で最初の雪が降る冬が近づいているので、スノーマシンを壊して雪をコーディングしてみませんか? nSTDINを介して整数を指定すると、レベルでASCII表現のベータのスノーフレーク(以下で説明)を出力しますn。 ベータ版のスノーフレーク スノーフレークは、レベル0で1つのxから始まります。 x 次に、各コーナーで次のいずれかの形状を追加します。 x xx 上記の形状を右上隅に追加します。右下隅の場合は、時計回りに90°、左下の場合は時計回りに180°、左上の場合は時計回りに270°回転させます。 そうすると、次のような形になります。 x x xx xx x xx xx x x 形状の向きに注意してください。次に、上記の方向規則を使用して、各コーナーに図形を追加し、レベル2を取得します。 x x x xxxxxxx xx x x xx xxx xxx xx x xx xxx xxx xx x x xx xxxxxxx x x x シェイプはx、2つ以上の露出した側面(上記のコーナーと呼ばれる)を持つs​​にのみ追加されることに注意してください。 L字型は、n1より大きい値で重複する場合があります。たとえば、次のようになります。 レベル0が次の場合: x x 次に、レベル1にオーバーラップが存在する必要があります(で示される、出力にをo含めないoでください): …

3
人参。そう。たくさんの。人参
くそー、それはたくさんのニンジンです。 インスピレーション タスク あなたは、できるだけ多くの言語のようにして、のすべてのインスタンスを置き換える、という、プログラムを作成しなければならない^とマークダウンフォーマットされたリンク私は答えにそれを投稿した場合、それは自動的にイメージとしてそれを読んで、代わりに画像を配置することを意味し(言葉の)この上向きのニンジンの。 前述のフォーマットの使用方法: まず、ファイル内の任意の場所に、次のようなリンクを配置します(この質問に対してこれを行いました)。 [1]:http://i.stack.imgur.com/mecHl.png そして、あなたがそれを望むところはどこでも: [![] [1]] [1] ルール 標準の抜け穴が適用されます。 入力は、STDINまたは同等のものを介して行われます。 出力は、STDOUTまたは同等のものを介して行われます。 コードは、使用するすべての言語で完全に動作するプログラムでなければなりません。 ニンジンに使用するURLは、この回答のURLである必要はありません。これはほんの一例です。SEのMarkdownにこの特定のニンジンが表示されていれば、任意の URLを使用できます。 これは多言語の課題であるため、ニンジン言語が最も多い答えが勝ちです! 同点の場合、最大数の言語を持つエントリの最短コードサイズが優先されます。 編集: また、言語の些細な派生物を使用しないでください!これは、代替言語(Brainfuck対ShadyAsFuck)および異なる言語バージョン(Python 2対Python 3)を使用することを意味します。 簡単なエソランがたくさんあります...(9001 BFバリアントを含む) あの男にならないでください。 注:はい、このプログラムは正規表現をサポートしている言語では少し簡単です。ただし、競合他社が使用できる言語の数を確認することです。

1
回転スパイラル
文字のらせんを表すテキストの正方形が与えられたら、それを回転させてください! スパイラルは中央から始まり、反時計回りに外側の端に移動し、中央の左から始まります。 987 216 345 これは文字列に変換されます123456789。回転は左に行われるため、1つの位置に回転すると、になります234567891。これは次のように表されます。 198 327 456 入力 入力は、スパイラルとそれを回転させる距離で構成されます。 距離は常に正の整数またはゼロであり、言語のデータ型の制限で制限できます。 スパイラルは、選択した行区切り文字(区切り文字なしを含む)を持つ文字列として解釈する必要があります。これは常に区切り文字を含まない正方形で、辺の長さが奇数です。 すべての文字が英数字[A-Za-z0-9]であると仮定します。 出力 出力は回転したスパイラルです。これは、複数行の正方形(印刷または返品)である必要があります。 例 入力 3 tne atd bin 出力 bat nit den 入力 18 efilr naepo umshf tootr butte 出力 rettu omseb oofft trliu hpean これはコードゴルフで、スコアは通常どおりバイト単位でカウントされます。
12 code-golf  string 

12
除去ゲームをプレイする
前書き この課題では、タスクは特定の種類の消去ゲームをシミュレートすることです。ゲームでは、参加者は輪になっており、全員が整数を保持しています。ゲームの各ラウンドで、すべての参加者は、保持している数nである場合nは、その人が離れる方向を指しています。n正の場合は右nに数え、負の場合は左に数え、nゼロの場合は自分自身を指します。誰かが彼らを指しているすべての参加者は排除され、円を離れます。これでラウンドが終了します。ラウンドは、参加者がなくなるまで続けられます。 入力 入力は、適切な形式の整数の空でないリストです。ゲームの参加者が保持している数字を表します。 出力 出力は、ゲームが終了するまでにかかるラウンドの数です。 例 入力リストを検討してください[3,1,-2,0,8]。最初のラウンドでは、次のことが起こります。 保持者は保持3者を指さし0ます。 保持者は保持1者を指さし-2ます。 持っている人-2のポイントは、人物保持のまま3。 0自分自身でポイントを保持している人。 保持8している人は、保持している人のすぐ-2近くにポイントを置きます(リストは円を表しているため、端で折り返します)。 これは0、-2と3が削除されることを意味するため、listで2回目のラウンドが実行されます[1,8]。ここでは、を1指して8おり、8自分自身を指してい8ます。3番目のラウンドはlistを使用して行われ[1]、1単純に自分自身を指して排除されます。すべての参加者を排除するのに3ラウンドかかったため、正しい出力は3です。 ルールとスコアリング 完全なプログラムまたは関数を作成できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 テストケース [3] -> 1 [0,0,0] -> 1 [-2,-1,0,1,2,3,4,5,6,7] -> 2 [5,5,5,6,6,6] -> 2 [3,-7,-13,18,-10,8] -> 2 [-7,5,1,-5,-13,-10,9] -> 2 [4,20,19,16,8,-9,-14,-2,17,7,2,-2,10,0,18,-5,-5,20] -> 3 [11,2,7,-6,-15,-8,15,-12,-2,-8,-17,6,-6,-5,0,-20,-2,11,1] -> 4 [2,-12,-11,7,-16,9,15,-10,7,3,-17,18,6,6,13,0,18,10,-7,-1] -> 3 [18,-18,-16,-2,-19,1,-9,-18,2,1,6,-15,12,3,-10,8,-3,7,-4,-11,5,-15,17,17,-20,11,-13,9,15] -> 6

3
マンハッタンの数学
次の演算子を定義します。 マンハッタンの加算 a + M b(1桁の数字の場合)は、bをaに連結した結果です。したがって、a + M b = 10a + bです。したがって、一般演算子+ Mは次のように定義されます。 a + M b = 10a + b マンハッタン減算 a – M b(1桁の数字の場合)は、aから最後のbを削除した結果です。したがって、演算子– Mは、擬似コードで次のように定義されます。 a – M b = a最後のbを削除 マンハッタン乗算 a× M bは、aのbのすべてのインスタンスをbのbインスタンスに置き換えた結果です。エルゴ、× Mは擬似コードで次のように定義されます。 a× M b = a-> s / b / <b bのコピー> …

4
パイロットを救え!
質問 私たちは彼らの宇宙ステーションでロボット軍に捕らえられています。私たちの宇宙船パイロットはレベル1の刑務所にいます。脱出する方法は1つしかなく、宇宙船パイロットを救助します。レベルNからレベル1に移行することを意味します。ただし、非常に危険なので、できるだけ少ないステップ数で刑務所に到着する必要があります。 条件 移動する方法は4つあります。 レベルNからレベルN-1に移動する e.g. from 12 to 11 レベルNからレベルN + 1に移動する e.g. from 12 to 13 レベル2kからレベルkまでテレポートを使用する e.g. from 12 to 6 レベル3kからレベルkまでテレポートを使用する e.g. from 12 to 4 テレポートは一方向のみです(12から4まで取得できますが、4から12まで取得することはできません) すべてのアクションは一歩を踏み出します 入力 入力は、STDIN、またはプログラミング言語の最も近い代替から読み取る必要があります。入力は、整数nで構成され1 <= n <= 10^8ます。 出力 出力は、nレベル1 に進むために必要な最小ステップ数でなければなりません。 例 Level Minimum number of steps 1 0 8 …
12 code-golf 

3
単調関数を生成する
概要 この課題の課題は、2つのセット間で単調な数学関数をランダムに生成することです。 入力 入力は2つの正の整数sとnです。 これらの入力を取得した後、プログラムはへのセットからランダムな数学関数を生成します。換言すれば、取り込み「ルール」であるとの間の整数のタプルと、戻るそのような整数です。さらに、次の意味で単調でなければなりません。もしおよび2つのです、このようなタプルすべての座標についても同様で、その後、。f{0,1,...,s-1}n{0,1,...,s-1}fn0s-1fABnA[i] ≥ B[i]if(A) ≥ f(B) 単調関数の正確な分布は、fそのような各関数が生成される正の確率を持っている限り、問題ではありません(完全なRNGを想定)。 出力 出力は、の入力と出力の列挙ですf。それはすべて含まなければならないnとの間の整数のタプルを0し、s-1それぞれが、対応する出力に続いている、いくつかのためにf。正確な出力形式は柔軟です(理由の範囲内)。 例 入力s = 3およびn = 2出力を生成する場合があります (0, 0) 0 (0, 1) 1 (0, 2) 2 (1, 0) 0 (1, 1) 1 (1, 2) 2 (2, 0) 1 (2, 1) 1 (2, 2) 2 セットのすべてのペアが{0, 1, 2}1回だけ含まれ、各ペアの後にはf-value が続きます。単調性条件も満たされます。タプルはここでは辞書式順序で示されていますが、これは必須ではありません。 別の例として、s …

5
別の人生でお会いしましょう、ブラザ!
私たちのほとんどのロストファンは、デスモンドが108分ごとに「4 8 15 16 23 42」の文字を入力しなければならなかったコンピューターを覚えています。 ここでの課題は、入力4 8 15 16 23 42が108秒ごとに入力されるか、メッセージを表示することを要求することにより、同じことを行うプログラムを作成することです。 Sorry, the world has ended with status code -1 メッセージとともに数字を入力する必要があることを100秒でユーザーに警告する必要があります。 Enter, Quick! プログラムはいつでも入力を読み取ることができなければならず、それが正しい入力であれば、タイマーをリセットします。誤った入力が与えられた場合、何も起こりません。 プログラムは無期限に実行する必要があります。したがって、最後の有効な入力の後のタイムラインは次のようになります 0〜99秒:出力なし 100秒:Enter, Quick! 108秒:Sorry, the world has ended with status code -1。 これはコードゴルフなので、このタスクを達成する最短の回答(バイト単位)が勝ちです!幸運を!

30
文字列から繰り返し単語を削除する
入力された文から繰り返し単語をすべて削除します。 入力は次のようにcat dog cat dog bird dog Snake snake Snakeなり、出力はになりますcat dog bird Snake snake。単語を区切るスペースは常に1つです。 出力順序は入力と同じでなければなりません。(例を参照) 句読点を処理する必要はありませんが、大文字の処理が必要です。
12 code-golf  string 

2
SQL出力テーブルを描く
私たちのほとんどは、端末でSQLの結果を見て、行と列にきちんとフォーマットされていると確信しています。まだお持ちでない場合の例を以下に示します。 +----------+-----------+----------------+ | column 1 | column 2 | column 3 | +----------+-----------+----------------+ | data | more data | even more data | | etc | just goes | on and on | +----------+-----------+----------------+ この課題の目標は、テーブルの列と行のデータが与えられたら、このスタイルでテーブルを描画することです。テーブルの上下に水平線があり、ヘッダー行のすぐ下に1本あるはずです。すべての列とテーブルの両側に1本の垂直線が必要です。垂直線にはパイプ、水平線にはハイフン、交差する場所にはプラス記号を使用する必要があります。 詳細: データは、stdinを介して、または関数の引数として入力できますが、何らかの形式の文字列でなければなりません データは文字列区切り文字で分割する必要があります ; データはASCII文字のみで構成され、引用符で囲まれず、区切り文字は含まれません。 データの最初の行は列ヘッダーに使用されます データの列数は常に同じです 入力には常に少なくとも2行(1つのヘッダー、1つのデータ)が含まれます。空のセットを処理する必要はありません。 末尾または前の改行が許可されます 各列は最も幅の広い要素と同じ幅にし、右側に短い要素をパディングします(左側に数字をパディングするとボーナス-5%) 列が広い場合を除いて、ヘッダーとデータの前後に1スペースのパディングが必要です。 実際のmysqlプログラムを使用してテーブルを生成することは許可されていません 標準的な抜け穴が適用されます サンプル入力: column …
12 code-golf 

1
信頼できないローカルユーザーからMac Proをリモートで保護するパニックスクリプトを作成する[非公開]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックコードゴルフスタックExchange用。 3年前に閉店しました。 状況 ワークステーションで「Shady Sam」管理者アクセスを許可し、一時的なルートログインパスワードを与えることで、Mac Proで重要な管理タスクを実行するとします。(彼らが信頼できると仮定してください。おそらく私の会社のシステム管理者です。) 遠隔地(自宅など)から、MacBook Proラップトップを使用してSamの活動を観察し、リモートデスクトップ(VNC)を介して自分でタスクを実行する方法を学びます。 警告なしに、Shady Samはなんともひどいことをします!おそらく、彼が私のハードドライブからデータを削除しようとしている、または制限されたフォルダーなどを覗き見しているのを目にします。 マウスとキーボードを共有しているため、リモートデスクトップ内からアクションを確実に実行できませんでした(接続を閉じることができました)。スクリプトを作成して、リモートで実行する必要があります。 チャレンジ 最高のスクリプト(例えば何panicScript.shかpanicScript.py)私は彼の卑劣な行為を行ってからシェイディーサムを停止するためにリモートで実行することができますし、それを再度試みるから彼を防ぎますか? 次の方法で実行することを想定しています。 scp panicScript.sh remoteMachine:~/panicScript.sh ssh remoteMachine . ~/panicScript.sh 可能な機能: 他のアイデアは特に奨励されています! remoteMachine上の任意/すべてのアカウントのパスワードを変更する キーボードまたはマウスを無効にします モニターを無効にします マシンを再起動します 仮定 シェイディサムはどのような方法でのMac Proが損傷したり、コンポーネントのいずれかを削除する(例えば、物理的にハードドライブまたは有線ネットワーク接続を削除する)が、彼はしませんでしょう再ログインしようとし、彼の卑劣な行為、可能な限り迅速に続けています。サムは、(そうでなければ)コンピューターへの無制限の物理的アクセス権とルートログインパスワードを持っています。 Mac Proには、モニター、キーボード、マウス、外付けハードドライブ、およびインターネット用のイーサネット接続があると仮定します。共有エリアのネットワークプリンターに印刷できると仮定します。楽しみのために、私の同僚と同じ複数の同僚のワークステーションに標準ユーザーアカウントがあるとします(したがって、を介してマシンに接続できますssh)。 同僚が立ち上がって互いに会話できるように、12個の屋外のキュービクルが集まっていると仮定します。私の同僚は、しかし、一般的に意志はない、彼は過去にそれらのいくつかを支援してきましたし、自分のコンピュータに卑劣なことをしなかったので、彼らは私のコンピュータで彼を見たらシェイディサムは卑劣な何かをやっていると思われます。 制約 パニックスクリプトは、最初は自宅のラップトップにあります。あなたのことができscp、それは私のマシンへとそこにそれを実行、または自宅で私のラップトップから直接実行します。(応答で指定してください!) スクリプトによって実行されるすべてのアクションは、リモートロケーションから後でアクセスできるように、リモートロケーションから損傷を与えたり、元に戻せないものでなければならず、Mac Proの標準機能/コマンドでなければなりません。 スクリプトは、マシンに標準装備されている限り、他のスクリプト/プログラムを呼び出すことができます。コマンドラインスクリプトツール(例awk)は、コマンドがメインスクリプト(例history | awk '{print $2}')に含まれている限り問題ありません。これにより、使用できるスクリプト言語が明らかに制限されます。 作成したカスタムスクリプトまたはプログラム(例:)を呼び出すことは. ~/myOtherScriptOfKungFoo.sh、スクリプト内から生成し、生成されたスクリプトが32文字未満でない限り、問題ありません。 echo -e "#"'!'"/bin/bash\necho \"Hello, …

3
先の道路塗装
2つのパラメータlane patternとroad lengthを指定すると、Roads and Traffic Serviceが道路をペイントするための車線マークのASCII表現を出力します。 入出力の例 入力: BTHMLRPHU、21 2つのパラメーターを取るか、文字列の末尾に数値を連結するかどうかは気にしません。それは明確です。 入力は、関数の引数、環境変数など、言語で意味のあるものとして、STDINから取得できます。 出力: ! | x ## | | x x ! ! B | /\ x HOV3 ## <- | -> | ^^ x HOV3 x ! ! B | \/ x HOV3 ## | | | | ^^ x …

1
ロスレス英語テキスト圧縮チャレンジ[終了]
閉じた。この質問には、詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善したいですか?詳細を追加し、この投稿を編集して問題を明確にします。 4年前に閉鎖されました。 チャレンジ: あなたの挑戦(受け入れることを選択した場合)は、ここにある5MBの「ウィリアムシェークスピアの全集」を圧縮および解凍することです:http : //www.gutenberg.org/cache/epub/100/pg100.txt (MD5: a810f89e9f8e213aebd06b9f8c5157d8) ルール: あなたはしなければならない介して入力を取るSTDIN経由して出力STDOUT ... ...そして、入力に同一の解凍結果を提供する必要があります。 (これは、上記と同じ MD5を取得できなければならないということです。)cat inpt.txt | ./cmprss | ./dcmpress | md5 (経由するものSTDERRはすべて破棄されます。) 合計ソースコードには2048文字未満を使用する必要があります。 (これはコードゴルフではありません。ソースコードの長さに基づいて得点を得ているわけではありません。これは物事を有限に保つための単なるルールでした。) (分割した場合は、すべてのソースコードを連結した長さを取ります。) 君は 必要ありますすぎて(理論上)のプロセスと同様のプレーンテキスト入力にできること。 (例えば、提供されたシェークスピアのみを出力できるメカニズムをハードコーディングする入力は受け入れられません。) (他の文書の圧縮サイズは無関係です-圧縮解除された結果が代替入力と同一である場合。) あなたは言語のいずれかを選択(複数可)を使用します。 (例:を使用して圧縮しawkたり、を使用して解凍したりすることをお気軽にjava) あなたは下さい二つの別々のプログラムを書くかのように「スイッチ」の何らかの形でそれらを結合します。 (圧縮モードと解凍モードの両方を呼び出す方法の明確なデモが必要です) 外部コマンドは使用できません(例:exec())。 (シェル言語を使用している場合-申し訳ありません。ビルトインで間に合わせる必要があります。共有と楽しみのために「受け入れられない」答えを投稿することはできますが、判断はできません! ) データを圧縮することを目的とする組み込み関数またはライブラリが提供する関数を使用することはできません(たとえば、gzなど) (エンコードの変更は、このコンテキストでは圧縮とは見なされません。ここでは、何らかの裁量が適用される場合があります。提出物でのソリューションの許容性については、お気軽に議論してください。) 参加することを選んだら、楽しんでみてください! すべての良い競争には、勝利という客観的な定義があります。エルゴ: すべてのルールが順守されている場合、最小の圧縮出力(STDOUTバイト単位)ます。 (を介して出力を報告してください./cmprss | wc -c) 抽選(同一の出力サイズ)の場合、最も多くのコミュニティが投票します。 2回目の抽選(同一コミュニティのアップ投票)のイベントでは、優雅さと純粋な天才の完全に主観的な検査に基づいて勝者を選びます。 ;-) 提出方法: …

1
ゴルフウォーズエピソードI:ファントムライトセーバー
背景テーマ 前書き オビ=ワン・ケノービ、クイ=ゴン・ジン、ダース・モールが戦おうとしています!しかし、彼らはそれぞれのライトセーバーを持参するのを忘れていました。Jedi入力として文字列が与えられると、この*のような画像を生成するプログラムまたは関数を作成します。 文字列を指定すると、次のSithような画像が生成されます。 画像の仕様 3つのライトセーバー(端に丸いエッジを含む白いブレード(赤いものには2つの丸いエッジ)とハンドルを含む)は、900pxの長さです(これはブレードの周りの色のグラデーションを含みません)。 ブレードの端の丸いエッジは、ブレードの幅に等しい直径の半円(明らかに離散的な近似)です。 ブレード(ライトセーバーの白い部分)は幅12pxです。 緑と青のライトセーバーは、200ピクセル(緑のブレードの中心線から青のブレードの中心線まで)で区切られています。 3つのライトセーバーすべてのハンドルは180px(全長の1/5)です。したがって、丸いエッジを含むブレード自体の長さは、青と緑のライトセーバーでは720px、赤のライトセーバーの2つのブレードでは360pxです。 青と緑のライトセーバーのハンドルはライトセーバーの下部にあります。赤いライトセーバーのハンドルは水平方向の中央にあります。 白いブレードの端から完全に白い色までのグラデーションの長さは、1.5 *ブレードの幅です(たとえば、直線部分の場合は18px)。 緑のグラデーションは、RGB(0,255,0)から白(255,255,255)(または実装しやすい場合は透明)になります。赤のグラデーションは(255,0,0)から白になり、青のグラデーションは(0,0,255)から白になります。 ハンドルの色はRGB(128,128,128)です。 ライトセーバーの周りに白い空のスペースがある場合があります。 入力 どちらかSithまたはJedi文字列として。この文字列は、STDINから、関数の引数、コマンドラインパラメーター、または同様のものとして取得できます。あなたは、入力が常に正確にSithまたはJedi他の何もないと仮定するかもしれません。 出力 入力文字列に対応する画像を含む画像ファイルを生成する必要があります。True Colorである限り、必要な画像形式を自由に選択できます。画像で。 得点 これはcode-golfであるため、バイト単位の最短回答が優先されます。力があなたと共にありますように。 *この投稿の画像はフルサイズで表示されません。

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