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

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

10
狂気チェックプログラム
狂気:同じことを何度も繰り返し、異なる結果を期待する。 実行するたびに例外(実行時エラー)をスローするだけのプログラムを作成します。課題は、例外を直接呼び出さずに(throwステートメントなしで)複数のクラッシュを生成する可能性があり、組み込みのランダムまたはCPUティックカウント関数を使用しないことです。 考えられるエラーごとに10ポイント。 エラー/クラッシュが別のプロセスまたはシステムで発生した場合、25ボーナスポイント。 ルール 応答では、発生する可能性のあるエラーとその生成方法を示す必要があります。 プログラムを実行するたびに同じ番号でシードされない限り、システム(組み込み)乱数ジェネレーターを使用できません。 メインプログラムスレッドの開始に対して相対的にカウントされない限り、ティックまたはCPUサイクルの数は使用できません。 マルチスレッドが許可されます(推奨されない場合)。 編集1 GUIDの生成は、組み込みの乱数ジェネレーターに分類されます。カスタムの「自家製」GUID生成が許可されています。 ファイルシステムへのアクセスは、ルールをバイパスする(ランダムビットのファイルまたはタイムスタンプを読み取る)場合を除き、ファイルのI / Oで許可されます。 編集2 非常識なソフトウェアを作成するという挑戦の精神を呼び出しabort()たり、assert()違反したりするため、この失敗モードに対して10ポイントは与えられません。 幸運を!

27
組み込みのベース変換なしでベース10からベース2に変換します
背景: 事前に作成されたベース変換関数を使用せずに、ベース10の数値をベース2に変換する割り当てが与えられました。インポートされたライブラリも使用できません。 問題点: 入力文字列を基数10(10進数)から基数2(バイナリ)に変換します。事前に作成された基本変換コード/関数/メソッド、またはインポートされたライブラリを使用することはできません。これはcode-golfであるため、バイト単位の最短回答が優先されます。 入力は-32768〜32767のいずれかになります(コードに符号バイト処理を含める)
16 code-golf  number 

3
英語の数字電卓
チャレンジ 口頭形式で入力を行い(方程式を話すように)、口頭形式で出力する(数値を話すように)計算機を作成します。 ルール 電卓は次のことができるはずです。 加算、減算、乗算、除算 マイナス100万から100万の間のオペランドを処理します マイナス10億から10億の出力を処理します 入力で小数点を処理し、出力に正しく配置します 10進出力を100分の1の位まで処理し、必要に応じて丸めます 小数の結果を生成するすべての演算は、最も近い100分の1の位に丸める必要があります(出力フォーマットと同じ)。 入力が誤ってフォーマットされているか、0で除算されているためにプログラムが失敗する場合、出力「E」(エラー)をレポートします。基本的に、プログラムは悪い入力ではクラッシュしません。それはお粗末な計算機だからです。 電卓がされ許可されますが、必須ではありませんオペランドまたは出力がその境界を逃れたときにエラーを報告します。これは問題を単純化することを意図していますが、私に同意しない場合は、エラーを報告することなく、より大きなオペランドと出力を正しく処理できる計算機を作成してください。 操作のオペランドがオペランドに定義された境界を超えた場合に「E」を出力します。 出力が出力用に記述された範囲を超えた場合の出力「E」 プログラムが大文字小文字の区別と空白をどのように処理するかは、イギリス英語またはアメリカ英語の選択と同様、ゴルファーに任されています。1 上記の機能を既に実装している言語またはライブラリを使用して計算機の実装をバイパスするプログラムは、勝利の資格がありません。 勝者 最も少ない文字数のプログラムが勝ちます。 例 入力: 2 + 2 出力: 4 入力: 21ポイント5マイナス1ポイント5 出力: 20 入力: 1-2 出力:負の1 入力: 5 x 5 出力: 25 入力: 25を5で割った 出力: 5 入力: 2 + 2-5 x 5を負のゼロ点5で除算 出力: 10 …
16 code-golf 

10
バレンタイングリーティングカードジェネレーター
入力として名前を指定すると、その名前をフィーチャーしたバレンタイングリーティングカードを生成するプログラムを作成します。そのソースコードにはバレンタインテーマもあります。グリーティングは、ASCIIアートまたは生成された画像のいずれかです。 追加の条件: ソースコードは、バレンタインデーをテーマにしたもののように見える必要があります(ハート、詩、または何か。創造的であること) すべてのコードと関連資産は、答えに適合する必要があります。 ネットワーク接続を使用できますが、ダウンロードできるのはこのページのみです(この質問が複数のページを獲得した場合は、それらもダウンロードできます)。必要に応じて、StackApps APIを使用できます。 「バレンタインデーをテーマにしたもののように見える」というルールは、このページから使用しようとするものにも適用されます(ネットワーク接続を使用している場合)。 他の外部ファイルは許可されていません。 言語の標準ライブラリを使用できますが、外部パッケージは許可されていません。 その他の制限: なし。これは人気コンテストです。 得点: 目に見える各投票(=投票からマイナス投票)は10ポイントの価値があります。 回答に対するコメントに対する2つの賛成票ごとに、1ポイントを獲得します スコアが最も高い回答は、バレンタインデー(2014年2月14日)に受け付けられます **このコンテストは終了しました。参加してくれてありがとう!**必要に応じて回答を追加することもできます

8
箱の外側を考える
球体を5面のボックスに収めようとしていますが、完全に収まらない場合があります。球体がボックスの外側(リムの上)にどれだけあるかを計算する関数を作成します。 次の3つの状況が考えられます。 球体は完全にボックスに収まります。答えは0です。 球は箱の縁にあります。答えは、総量の半分以上になります。 球体は箱の底にあります。 ここで各状況を見ることができます: この値を少なくとも4桁の有効数字で計算するプログラムまたは関数を作成する必要があります。 入力:便利な形式の4つの非負の実数*-幅、長さ、ボックスの深さ(内部測定)、および球体の直径。 出力:使用可能な形式の1つの非負の実数*-ボックスの外側の球の総体積(パーセントではありません)。 * 10進数文字列との間で変換可能である必要があります できるだけ三角法の使用を制限することをお勧めします。 これは人気コンテストなので、箱の外で考えてください!

16
「パスワード」という単語が見つかるまでブルートフォース文字の組み合わせを実行するプログラムを作成する
プログラムはすべての文字の組み合わせ(小文字でも大文字でも構いません)をアルファベット順に印刷する必要があります。で始まりa、最後に印刷される組み合わせはである必要がありますpassword。 出力は次のようになります。 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ... passwora passworb passworc password

9
ポータル迷路の最短経路
あなたの目標は、使用してランダムな10×10のマップを作成するプログラムを書くことで0、1、および2、および左上から右下に最短経路を見つける、と仮定します: 0は芝生のフィールドを表します。誰でも歩くことができます。 1は壁を表します。壁を越えることはできません。 2はポータルを表します。ポータルに入ると、マップ内の他のポータルに移動できます。 仕様: 左上の要素と右下の要素は0でなければなりません。 ランダムマップを作成するとき、すべてのフィールドは、0になる確率が60%、1になる確率が30%、2になる確率が10%でなければなりません。 隣接するフィールドで移動できます(斜めのフィールドでも)。 プログラムは、マップと最短パスのステップ数を出力する必要があります。 右下のフィールドにつながる有効なパスがない場合、プログラムはマップのみを出力する必要があります。 任意のリソースを使用できます。 最短のコードが優先されます。 ステップの計算: ステップは実際の動きです。フィールドを変更するたびに、カウンターをインクリメントします。 出力: 0000100200 0100100010 1000000111 0002001000 1111100020 0001111111 0001001000 0020001111 1100110000 0000020100 9

24
異なるベースで6 * 9を計算する
次の結果を出力します(これは、2から36までのベースで6 * 9を計算した結果です)。文字が大文字であることを確認し、乗算自体がすべての行に出力されます。 6 * 9 = 110110 6 * 9 = 2000 6 * 9 = 312 6 * 9 = 204 6 * 9 = 130 6 * 9 = 105 6 * 9 = 66 6 * 9 = 60 6 * 9 = 54 6 * …

30
RegExpsなしで数字以外で文字列を分割する最短プログラム
編集:あなたがLispを使用している場合、バイト数をカウントする際の下部にいくつかのガイドラインを示しました。 目的:正規表現を使用せずに、文字列を数字以外で分割し、各文字列の数字のみで構成される配列を返す最短の関数を作成します。先行ゼロは各文字列に含まれます。 現在の順位(カテゴリで区切られた): C / C ++ / C#/ Java: 68(C).... GolfScript / APL / J: 13(APL) その他すべて: 17(Bash、使用tr)、24(Ruby) ルール: (長さをおaびします) 形式は、単一の文字列引数を持つ関数でなければなりません。配列を適切に返すために必要な場合は、最大2つの引数を追加できます(たとえば、sh / csh / DOS Batchは返すために追加の変数参照を必要とします)。 主要な関数宣言はカウントされず、他の標準ライブラリのインポートもカウントされません。「#include」、「import」、および「using」はカウントされません。他のすべてが行います。これには、 `#define`sとヘルパー関数が含まれます。混乱させて申し訳ありません。カウント/カウントしないもの(Cスタイルの構文で記述されている)についての有用なガイドとしてこれを参照してください。//合計にはカウントされません。ただし、 // Javaの標準ライブラリの半分のように、非自明。 #include <stdio.h> import some.builtin.Class //カウントされません、上記を参照 #define printf p //合計にカウント / *その他のプリプロセッサディレクティブなどがカウントされます。* / int i = 0; //カウント someFunction(); //カウント …
16 code-golf  string 

2
仮想フェンシングの試合に勝ちます(仲間のスタック交換機に対して)
警告:これはかなり複雑な問題で、キングオブザヒルの戦闘スタイルではランダム性が追加されているため、最高のコードが常に勝つとは限りません。非常に複雑なので、すべてのルールを完全に読んでください! FLAVOR TEXT ビルとスティーブは「友好的な」決闘をすることを決めましたが、とてもリッチで賢いので、最高のプログラマーがお互いを打ち負かすためのコードを考え出すことに手を貸すことにしました。あなたはプログラマーと言われています。 OBJECTIVE フェンシングの目標は、対戦相手のヒット数を最大にし、自分自身のヒットを最小限にすることです。 MOVES コードには、次の「移動」の選択肢があります。 アタック パリー ブロック ランジ アンド ヘッド チェスト フィート SCORING POINTS ビート攻撃Parrying、1ポイントの 突進ビート、ブロック1点について Parryingは、突進ビート1点について 、ビートをブロッキングが攻撃1点について 、攻撃突進つながり、次のラウンドをブロックまたは受け流すことができない突進プレーヤー、攻撃プレイヤーができません次のラウンドを攻撃または突進します。 ブロックネクタイパリーします。受け流しているプレイヤーは次のラウンドをブロックまたは受け流せず、ブロックしているプレイヤーは次のラウンドを攻撃または突進できません。 HEIGHT OF ACTION また、アクションの「高さ」を選択します。その結果、上記の結果は、両方のプレイヤーの高さが攻撃の高さに一致した場合にのみ発生します。高さが一致しない場合、ポイントが獲得されるまで、または4つのアクションすべてが満たされるまで(タイが壊れると、すべてのアクション)、両方のプレイヤーは以前のタイイングラウンドと同じアクションを選択できなくなります(高さは制限されません)再び利用可能です) CODE REQUIREMENTS 各ラウンドで、対戦相手の前のラウンド(ラウンド1を除く)の動きを促し、それを自分のラウンドと比較し、前のラウンドの結果を決定し、次のラウンド番号、スコア、およびその選択/位置を出力する必要がありますそのラウンドのために 例: 入力:LC(ランジチェスト) 出力:前のラウンド:PM対LC-PMスコア!スコアは2-1、次のラウンドのアクションはAH(攻撃ヘッド) WINNER ゲームは50ラウンド後、または3ポイントが獲得された後に終了します AGAINST OTHER PLAYERS 実際に動作/プレイするように機能している限り、最初の回答には即座に保証された勝利が与えられます。各回答は投稿順で前の勝者に対して評価され、勝った場合は新しい勝者として宣言されます。私は勝ち、または競うのを待っている間、あなたのコードを変えないようにお願いします。敗北すると、同じ言語でチャンピオンシップステータスを競うことはできなくなりますが、異なる言語の回答を送信することはできます(同じベースのもののバリエーションを使用せずに、大幅に異なる必要があります)。 各チャレンジを実行しようとし、チャンピオンとチャレンジャーのコメントに結果を投稿し、新しい勝者を宣言します-すべての言語、特に不明瞭な言語を実行できない場合があるため、あなたの答えが実行されることを確実にするためにあなたが与えることができるあらゆる助けが考慮に入れられます。ありがとうございました!

10
2つのクリーチャー間の戦いをシミュレートする
Brave Code Golferさん、ようこそ!今日、あなたはゴブリンとエルフの間の素晴らしい戦いの真っstand中に立つでしょう! goblin attacks elf! elf dodges! elf attacks goblin! elf hits goblin for 13 damage! goblin has 37 health left. goblin attacks elf! goblin hits elf for 1 damage! elf has 49 health left. elf attacks goblin! elf hits goblin for 19 damage! goblin has 18 health left. …

14
岩、紙、はさみ、トカゲ、スポック[閉鎖]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Code Golf Stack Exchangeのトピックになるようにします。 2年前に閉店。 入力として2つの文字列を受け取り、結果に対して単一の出力を返す関数を作成します。最も人気のある答えが勝ちです。 じゃんけん・トカゲ・スポックのルールは次のとおりです。 はさみカット紙 紙は岩を覆う ロッククラッシュトカゲ トカゲはスポックを毒する スポックはハサミを打ちます はさみはトカゲを断頭します トカゲは紙を食べる 紙はスポックを反証する スポックは岩を蒸発させる 岩はさみ 考えられるすべての入力ケースの出力は次のとおりです。 winner('Scissors', 'Paper') -> 'Scissors cut Paper' winner('Scissors', 'Rock') -> 'Rock breaks Scissors' winner('Scissors', 'Spock') -> 'Spock smashes Scissors' winner('Scissors', 'Lizard') -> 'Scissors decapitate Lizard' winner('Scissors', 'Scissors') -> 'Scissors tie …

3
最長の非繰り返しGame-of-Lifeシーケンス
正の整数Nを与え、ゲームオブライフルールで最長の非反復シーケンスを生成し、トーラスで再生される固定パターン(長さ1のサイクル)で終わるN x Nグリッドの開始パターンを決定します。 目標は最短のプログラムではなく、最短のプログラムです。 世界は有限であるため、最終的にはループに陥り、すでに訪れた状態を繰り返します。このループに期間1がある場合、開始パターンは有効な候補です。 出力:開始パターンとシーケンス内の一意の状態の総数(開始パターンを含む)。 現在、1x1トーラスは特別なものです。セルはそれ自体に隣接していると見なされているかどうかに関係ありませんが、実際には問題はありません。いずれの場合も、単一の生きているセルは(過密または孤独の)死ぬだけです。したがって、入力1は、長さが2のシーケンスを生成します。このシーケンスは、1つのセルが生き、その後は永遠に死んでいます。 この質問の動機は、忙しいビーバー機能に類似しているが、メモリに限界があるため、間違いなく複雑です。これは、OEISにも含めるのに適したシーケンスです。 N = 3の場合、シーケンスの長さは3で、左側のパターンは完全に黒い3x3正方形に達し、その後死にます。(1サイクルの一部であるすべてのパターンが削除されます)。

28
シフトするドット
プログラムは、ドットと改行が後に続くいくつかのスペースを印刷する必要があります。スペースの数は、0 <x <30で定義されたドットのx位置です。 すべての新しい行はターンです。プログラムは30ターン実行されます。プログラムはランダムなx位置から始まり、毎ターン、定義された領域内にとどまりながら、この位置を1ずつ左または右にランダムにシフトします。ターンごとに、ドットの位置を1ずつ変更する必要があります。 スコアは文字数です。すべての印刷行が正確に30文字(および改行)で構成されている場合、10のボーナスポイントを獲得できます。プログラムが定義された領域の中央にランダムに留まる傾向がある場合、50のボーナスポイントを獲得できます。 編集: 50のボーナスポイントは、ドットを中央に引き寄せることを目的としています。たとえば、ドットがx = 20にあり、66%が左に、33%が右に移動する可能性がある場合に適用されます。これは開始点から独立している必要があり、左右のパーセント値を動的に変更することによってのみ発生します。 いかなる種類の入力も許可されず、出力は実行中のコンソール上になければなりません! 理解を深めるために、javaで読みやすい例を示します。これにより、スコア723が得られます。 public class DotJumper{ public static void main(String[] args){ int i = (int)(Math.random()*30); int max = 29; int step = 1; int count = 30; while(count>0){ if(i<=1){ i+=step; }else if(i>=max){ i-=step; }else{ if(Math.random() > 0.5){ i+=step; }else{ i-=step; } } …
16 code-golf 

6
コードゴルフ:同じ種類のものが触れないようにナッツを混ぜます
入力: 入力は、(あなたの言語での)ナッツのランダム化された配列であり、可能なナッツが続きます。プログラムには、整数コードなど、さまざまな種類のナットを表す方法が必要です。プログラムは、ナットのあらゆる構成のあらゆるサイズの配列を処理できる必要があります。 可能なナット: Kola nut Macadamia Mamoncillo Maya nut Mongongo Oak acorns Ogbono nut Paradise nut Pili nut Pistachio Walnut 出力: 出力は、同じ種類の隣接するナットがないような方法でソートされた配列でなければなりません。これが不可能な場合、出力は空の配列でなければなりません。 入力例(簡略化): ["walnut", "walnut", "pistachio"] 出力例: ["walnut", "pistachio", "walnut"] ソリューションは、偶然に一意になるまでアレイを単純にシャッフルしない場合があります。採用されるソートは決定論的なものでなければなりません

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