タグ付けされた質問 「code-golf」

コードゴルフは、ソースコードの最小バイトで特定の問題を解決するための競争です。

5
アインシュタインの謎を解く
アインシュタインはなぞなぞを書いた。彼は、世界の98%がそれを解決できなかったと言いました。 電車に乗って仕事をしながら約25分でこの謎を解きました。基本的には単なる控除です。 なぞなぞ 5つの異なる色の家が5つ並んでいます。 各家には異なる国籍の人が住んでいます。 5人の所有者は特定の種類の飲料を飲み、特定のブランドの葉巻を吸って、特定のペットを飼っています。 同じペットを持っている所有者、同じブランドの葉巻を吸う所有者、または同じ飲み物を飲む所有者はいません。 質問: 魚の所有者は誰ですか? この謎を解決するために、アインシュタインは15のヒントを提供します。 ブリットは赤い家に住んでいます。 スウェーデン人は犬をペットとして飼っています。 デーンはお茶を飲みます。 グリーンハウスはホワイトハウスのすぐ左にあります。 温室の所有者はコーヒーを飲みます。 ポールモールを吸う飼い主は鳥を飼っています。 黄色い家の所有者はダンヒルを吸っています。 センターハウスに住んでいる所有者は牛乳を飲みます。 ノルウェー人は最初の家に住んでいます。 ブレンドを吸う飼い主は、猫を飼っている飼い主の隣に住んでいます。 馬を飼っている飼い主は、ダンヒルを吸う人の隣に住んでいます。 ブルーマスターズを吸うオーナーはビールを飲みます。 ドイツ人は王子を吸う。 ノルウェー人は青い家の隣に住んでいます。 Blendsを吸う所有者は、水を飲む人の隣に住んでいます。 これらのヒントを使用して、解決策を見つけることができます。 あなたの仕事:この謎を解決するプログラムを作成してください。ソリューションのハードコーディングは許可されません(duh) ヒントは任意の形式でハードコードできます。 形式の例: //Hints in order (Nationality:Brit)==(Color:Red) (Nationality:Swede)==(Pet:Dogs) (Nationality:Dane)==(Drink: Tea) (Color:Green)/(Color:White) (Color:Green)==(Drink:Coffee) (Smoke:PallMall)==(Pet:Birds) (Color:Yellow)==(Smoke:Dunhill) (House:3)==(Drink:Milk) (Nationality:Norwegian)==(House:1) (Smoke:Blend)/\(Pet:Cats) ==は次と等しいことを 意味します\の 左側にあることを意味します / \の 右側にあることを意味します 私が言ったように、ヒントをハードコードするか、入力として持つことができます。 …
19 code-golf 

3
ああ!獣はHHHです!
IBM PC AT、YouTube(ビデオを参照)、Wikipedia(記事を参照)、およびSesame Street から学んだように: 手紙Hはアルファベットの中で最も容赦ない手紙です! (実際にコードページ437の 2つの要素で構成されている場合でも、実際にはそのように無慈悲です。) エイリアンのように、ええと... エイリアン、ビーストはたまらなく卵の近くに来る人すべてを執pursueに追い求めます。彼らには理由はありません。滅びないようにするには、それらをつぶさなければなりません。 このシナリオでは、あなたはあなたの最後の生命まで落ちており、卵のない地形で平野の獣に会ったと仮定します(Wikipediaのスクリーンショットのように)。数字キーパッドはなく、直接上下左右に移動することしかできません...しかし、獣には明らかに1つがあり、ターン中に斜めに移動できます。 ビーストの選択肢の中からの移動の選択は、プレイヤーからの距離を最小にするものになります。距離が等しければ、タイブレークは左+上より右+下を優先して行われますが、明確にするための曖昧さ除去マトリックスは... 1 3 4 2 H 5 6 8 7 獣は眠ることはありませんが、幸いにもプレイヤーより少し遅いです。彼らは1ターンおきに移動します(2ターン目に交替を開始することにより、プレーヤーに有利なスタートを与えます)。移動が可能であれば、プレイヤーからさらに遠ざかるかに関係なく、移動する必要があります。 閉じた隙間に座っていた可動壁の列を移動すると、獣をつぶします。これらの普通の獣は、頭に2ポイントの価値があります。 入力 列と行でマップのサイズを示す整数のペア。 入力の行の行数。各列サイズは、固体壁(#)、可動壁(~)、獣(H)、プレイヤー(O)、またはスペースのみを含みます。 プレイヤーが移動しようとしたことを示すU、D、L、R、または単に待機するWの入力。ブロックされている可動壁を押し込もうとすることは合法的な入力であり、アクションを起こさないことに注意してください。 出力 aHHHH! 獣がプレイヤーを殺した場合...またはプレイヤーが獣を残さずに勝った場合は何もありません スコア (注:デバッグや娯楽のために、各ステップで状態を出力できるようにしたい場合がありますが、ここに投稿するには長すぎます。) 明確化 マップは、固体の壁で囲まれていることが保証されています。 誰が順番に移動するかは、結果にとって重要です。したがって、プレイヤーは常に最初に移動し、画面上を左から右にスイープしている場合、獣には最初のマップ位置に基づいた順序が与えられます。(行1の獣は行2の獣の前に移動し、同じ行の2つの獣は、列番号が最も小さいものが他方の前に移動します) 斜めに動く獣は、壁の間を絞る必要があるかどうかに関係なく、開いている隣接する斜めのスペースに移動できます。 プレイヤーは、もう一方の端にスペースまたは獣がある限り、任意の数の可動壁を一列に押すことができます。しかし、壁の間に固定されていない獣に壁の列を押し込もうとすると、獣は壁として扱われ、移動は許可されません。 ターン中の獣の移動の決定は、ターン開始時のプレイヤーの位置に基づきます。「プレーヤーまでの距離」の望ましい最適化は、「カラスが飛ぶように」計算によるものです。正方形の中心からプレーヤーの正方形の中心までを測定した場合と同じ結果が得られる近似は問題ありません。 優先順位の高いビーストがスポットを奪ったために、ビーストがそのターンで最初に好まれた動きをすることができない場合、その場所にとどまるのではなく、次の最良の選択をします(動きがまだ可能である場合)。 サンプルケース シンプルクラッシュ 入力 5 3 ##### #O~H# ##### R 出力 2 …
19 code-golf  game  maze 

3
Haskellの最短のa-> b->(a-> b)関数
テストで次の質問がありました。 f次のタイプの関数を作成しますa -> b -> (a -> b)。aまたb、いかなる意味においても束縛されるべきではありません。コードが短いほど良いです。 私は思いついたf a b = \x -> snd ([a,x],b)。もっと小さなものを見つけることができますか? 現在の勝者は: f _=(.f).const

2
単数または複数?
30個の英語の名詞の単数形と複数形のリストを次に示します。あなたの仕事は、最短の正規表現と一致する記述するだけで、すべての一つの形で名詞をし、どれも他では(簡単に、すべての英語の名詞で終わるs複数形の右にあります?)。 SINGULAR PLURAL --------- -------- car cars boat boats man men woman women omen omens bus buses cactus cacti spy spies pie pies louse lice mouse mice amice amices goose geese creese creeses person people child children siren sirens ox oxen foot feet tooth teeth formula formulae minx minxes sphinx …

29
Tictactoeで勝利を決める
コードゴルフをしましょう! 三目並べボードの状態を指定(例:) |x|x|o| |x|o|x| |o|o|x| ゲームがあるかどうかを判断しwin、A loseかcat。コードは、状態を指定してこれらのオプションのいずれかを出力する必要があります。上記のゲームは出力するはずですlose 明確にするために、勝ちとはx、連続する3 秒(対角、水平、垂直)として定義されます。負けは3 o秒連続で、catゲームは連続なしで3 秒です。 物事を面白くするには、状態の入力構造を決定する必要があります。それについて説明する必要があります。たとえばxxoxoxoox、上記の有効な状態では、各文字が左から右、上から下に読み取られます。[['x','x','o'],['x','o','x'],['o','o','x']]同様の方法で読み取られる多次元配列のゲームです。ながら0x1a9そのためヘクスである110101001適切な圧縮としてかもしれない仕事1のために操作することができるxのと0のために操作することができますo。 しかし、これらは単なるアイデアであり、あなたはあなた自身の多くを持っていると確信しています。 基本ルール: プログラムは、実行可能な状態を受け入れることができる必要があります。 入力の形式は、あらゆる状態を表すことができなければなりません。 「勝利の状態は、ボードから決定する必要があります」 完全なボードを想定 Win前にloseインスタンスの場合の「xxxoooxxx」 最小の文字数が勝つ
19 code-golf  game 

10
運命のメモ-譜表にメモを入れる
ゾンビの黙示録が来て、世界は終わりに近づいています。突然、誰かが現在の時、分、日を取る式を発見し、それを聞いたすべてのゾンビを即座に殺すピアノで演奏するための完璧な音を吐き出します。残念ながら、世界にはピアノ奏者が1人しかいないため、ノートの読み方を忘れていましたが、楽譜の読み方はまだ知っています。もちろん、これは非常に時間に敏感なことなので、コンピューターにそれをさせるのは自然なことです。1 あなたの課題は、などのメモを取り、次のようにG譜表に配置されたメモを高音部記号で出力することです。 ----- ----- | ---|- | --O-- ----- 仕様: -----(5ダッシュ)と空白行の交互の行の譜表を出力する必要があります。-----合計5 秒になります。この譜表の上に音符を重ねる必要があります。 入力により、ノートの場所が指定されます。入力は次のようになります。 オプションのHor L、「high」または「low」を指定 からAまでの文字でG、ピッチを指定します オプションの#またはb、シャープまたはフラットを指定します。 「メモ」は次のように定義されます。 O音符の場所にある譜表の中央に配置された1つ(大文字のO)。(一番上の行はHF(高F)、一番下の行はE(通常のE)です。) 3つ|のs(垂直バー)、ステム。 音符が中央の行(B)または上にある場合、音符の左に1スペース、下に行く(音符の下に1スペース開始)、または 音符が中央線より下にある場合、音符の右側に1スペース、上に行く(音符の上に1スペース開始)。 A #またはb入力で指定されている場合、ノートの左に直接1つのスペース。 メモが高すぎたり低すぎたりする場合は、元帳行を追加する必要があります。これらの行は---(5ではなく幅が3ダッシュのみ)、ノートが元帳行の上または下(上/下元帳行の場合)にある場合にのみ表示されます。 余分なスペースを任意の場所に配置できます。たとえば、文字の保存に役立つ場合は、空白行にスペースを入れるか、元帳行の後にスペースを入れることができます。 以下は、仕様をより簡単に理解するための視覚化で、すべてのノート名が行の横にあります。 HB --- HA HG ----- HF HE ----- HD HC ----- B A ----- G F ----- E D --- C LB --- …

25
増分ベッティング
数ヶ月前、私はインタビューのための事前スクリーニングのパズルとしてこの質問をしました。最近、ブログの素材について考えると、問題を機能的に解決するための良い例として頭に浮かびました。ブログ投稿を書き終えたらすぐに、これに対する解決策を投稿します。 注:この質問は1年前にStackOverflowで尋ねられたもので、いくつかの(誤った)回答の後に採択されました。明らかなインタビューや宿題の質問であると断定されたと思います。ここでの答えは、誰かがそれらを使用することを考えないように、十分に深くコード化されるべきです! レースでは、次の戦略を使用して賭けます。ベットを失うたびに、次のラウンドのベットの値を2倍にします。勝つたびに、次のラウンドの賭け金は1ドルになります。1ドルを賭けてラウンドを開始します。 たとえば、20ドルで開始し、最初のラウンドで賭けに勝ち、次の2つのラウンドで賭けを失い、4番目のラウンドで賭けに勝った場合、20 + 1-1-2になります。 +4 = 22ドル。 次のg2つの引数を取る関数を完了することが期待されています。 最初の引数は整数aで、これは賭けを開始するときに持っている最初のお金です。 2番目の引数は文字列rです。結果のi番目の文字は、i番目のラウンドの結果を示す 'W'(勝ち)または 'L'(負け)のいずれかになります。 あなたの関数は、すべてのラウンドがプレイされた後に持っているお金の量を返す必要があります。 ある時点で、ベットの価値をカバーするのに十分なお金がアカウントにない場合、その時点で持っている合計額を停止して返さなければなりません。 サンプル実行 1st round - Loss: 15-1 = 14 2nd round - Loss: 14-2 = 12 (Bet doubles) 3rd round - Loss: 12-4 = 8 4th round - Win: 8 + 8 = 16 5th …

14
一緒に4つの正方形
ラグランジュの4平方定理は、任意の自然数が4平方数の合計として表現できることを示しています。あなたの仕事はこれを行うプログラムを書くことです。 入力:自然数(10億未満) 出力:正方形の合計がその数になる4つの数値(順序は関係ありません) 注:ブルートフォース検索を行う必要はありません!詳細はこちらとこちら。この問題を単純化する関数がある場合(決定します)、それは許可されません。自動化された素数関数と平方根が許可されています。複数の表現がある場合、どれでも構いません。総当たり攻撃を行うことを選択した場合は、妥当な時間(3分)以内に実行する必要があります サンプル入力 123456789 サンプル出力(どちらでも構いません) 10601 3328 2 0 10601 3328 2

12
土地がフェンスで完全に囲まれているかどうかを判断する
ブール値の2次元配列を想像してください。0は土地の長方形のプロット上の草の正方形を表し、1はフェンスを表します。 2D配列を入力として受け入れ、フェンスにぶつかることなく、北/東/西/南の動きのみを使用して、草のある領域から他の草の領域に移動できるかどうかを決定する関数を記述します。 配列内の草のいずれかの領域がフェンスで完全に囲まれている場合(配列内の草の他のすべての領域に到達するためにN / E / W / Sを移動できないことを意味します)、関数はfalseを返します。それ以外の場合は、trueを返します。 以下は入力として使用できる2つのサンプル配列です。ただし、関数はこれらだけでなく、ブール値の2D配列も処理できるはずです。 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 (should return true) 0 1 0 1 0 0 1 1 0 0 0 0 …
19 code-golf 

1
キヌイッシュ三目並べ
人間のプレイヤーに対して3 * 3ボードで三目並べの完璧なゲームをプレイする選択した言語でプログラムを作成します。ただし、すべての動きは、前の反復から生成された異なるプログラムでなければなりません。 人間の入力をどのように、どのような形で評価するかはあなた次第ですが、標準入力から読み取る必要があります。同様に、どのプレイヤーが開始するかを決定する方法を自由に選択できます(たとえば、最初に尋ねる、またはコンピューターが開始することを知らせる無効な動きを人間に入力させる、または他のアイデアを許可する)。 動きを検証する必要はありません。あなたはかなりプレイしている人間の対戦相手であると想定できます。 基本的に、ボードの状態に対応するプログラムがあります。状態は認識可能な方法で出力されますが、少なくとも次の詳細レベルが予想されます。 X.. 00X x.. 人間のプレーヤーが彼の動きを入力した後、プログラムは同じ言語のソースファイル(標準出力またはファイル)としてそれ自体の次の反復を生成し、終了する必要があります。そのソースファイル以外の場所に情報を保存することはできません。(プログラムが生成されたプログラムをビルドして実行する必要はありません。ユーザーが実行できますが、禁止されていません)。生成されたプログラムがビルドおよび実行されると、同様に動作し、状態を表示し、ユーザー入力を待機します。 ゲームの終わりに、明確に特定できる方法で結果を印刷する必要があります(勝ったか同点か)。 完璧なプレーとは、プログラムが負けてはならないことを意味し、勝つことを強制する可能性がある場合、勝つべきです。 最短のコードが勝ち、最初の有効なエントリから少なくとも10日後に勝者が選択されます。 プログラムが次の反復の構築と起動を処理できる場合、スコアが10%減少します。(おそらく、それだけの価値はないことを知っています)もちろん、プログラム自体は、次の反復がユーザーからの動きを受け入れるまでに終了しなければなりません。 珍しい珍しいトリックを使用する場合は、コードに簡単な説明を投稿してください。
19 code-golf 

28
プライムギャップの計算
素数を見つけることは、プログラミングの通過儀礼であり、非常に頻繁に誰かが作成する最初の深刻なプログラムです(通常は試用部門で)。 しかし、素数だけはすでに使い古されています。次に興味深いのは、素数のギャップを取得することです。連続する素数間のこれまでで最も長いギャップです。これらは非常にまれで「貴重な」ものです。最初のいくつかのペアとその違いは次のとおりです。 2 3 1 3 5 2 7 11 4 23 29 6 89 97 8 113 127 14 ... 父は、これらを10kまでの楽しみのために手作業で計算していました。コードがどれだけ短いかを見てみましょう。 ルール: 素数テスト、素数生成、または素数ギャップのための組み込み関数はありません http://oeis.org/A002386などを取得しません(遠くから詐欺師の匂いがすることができます:)) 事前計算された配列はありません 内部整数型が失敗するまで印刷を続ける 最小の文字数が優先されます。素数なしでギャップのみを印刷する場合は、+ 10文字。 興味深い場合は、組み込み関数を備えたバージョンを披露することもできます。クリエイティブに。 明確化:プライムを通過し、以前に見たギャップよりも大きいギャップを見るたびに報告します。たとえば、3と5の間には、2ユニット幅のギャップがあります。5と7の間のギャップも2ですが、それは古いニュースです。これ以上は気にしません。新しい最大のギャップが見つかった場合にのみ、報告します。これは、ギャップがますます広くなるにつれて、素数がどんどん少なくなっていることを反映しています。 編集:ほとんどの答えは素晴らしいですし、より多くの認識に値します。ただし、これまでのところ、48文字のGolfScriptエントリが最短です。
19 code-golf  primes 

6
チェス-すべての合法的な動きを見つけます(キャスティングと入場者を除く)
特定のFEN文字列から現在のプレーヤーのすべての可能な(合法的な)動きを計算する最短のコードを記述します。FEN文字列とは何ですか?(ウィキペディア) 最短のコードが優先され、言語は関係ありません。 出力の移動は、en passant、castling、およびポーンプロモーションを除き、チェスの移動規則 に従う必要があります。 チェック、チェックメイト、およびステイルメイトを無視します。キングも状況をキャプチャできません。 あなたが欲しいとは異なる出力を設定することができます(例:A2-A4、A2A4、a2a4、a2->a4...) テストケース: #入力1: rnbqkbnr / pppppppp / 8/8/8/8 / PPPPPPPP / RNBQKBNR w KQkq-0 1 #出力1 A2-A4、A2-A3、B2-B4、B2-B3、C2-C4、C2-C3、D2-D4、D2-D3、E2-E4、E2-E3、 F2-F4、F2-F3、G2-G4、G2-G3、H2-H4、H2-H3、B1-A3、B1-C3、G1-F3、G1-H3 #入力2 7k / 8/8/8/8/8 / PP6 / Q1q4K w--0 1 #出力2 A1-B1、A1-C1、A2-A3、A2-A4、B2-B3、B2-B4、H1-H2、H1-G1、H1-G2
19 code-golf  chess 

21
リバーシブルリバーサー
あなたの仕事は簡単です。プログラムは標準入力からテキスト行を読み取り、同じテキストを文字反転形式で出力します。他のものを印刷することはできません。 例えば: 入力:「Hello!」、出力:「!olleH」 キャッチは、ソースコード自体が文字反転されている場合、プログラムはまったく同じことを実行できる必要があるということです。 スコアリング:標準のコードゴルフスコアリングが適用されますが、退屈を制限するために次の変更が加えられます //margorp program// スタイルの答え:回文である解決策はすべて、スコアに+ 25%のペナルティが課せられ、切り上げられます。このペナルティは、たとえば回文を壊すために、有用な効果のない文字をプログラムに挿入する場合にも適用されます。

1
Javaが勝つコードゴルフの問題を書く[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Code Golf Stack Exchangeのトピックになるようにします。 7年前に閉鎖されました。 以下のようなコードゴルフタスクを書く タスクに必要な唯一の入力(ある場合)は、標準入力からのテキストであり、タスクに必要な唯一の出力は、標準出力へのテキストです。 タスクで定義されているすべての有効な入力に対して、文字の正確な出力文字列が1つだけ存在します。 有効な各入力の長さは10000文字未満です。 各正しい出力の長さは10000文字未満です。 すべての入力に対してタスクを正常に完了する最短のプログラム(StackExchangeユーザーが管理する)はJavaにあります。 関連するJavaプログラムが最も短いタスクが優先されます。
19 code-golf 

1
ユニークな数独ファインダー
チャレンジ: 標準入力の数独ボードを使用して、ボードを一意にするために追加される最小数を見つけます。 詳細/ルール: 入力は次のようにフォーマットされます(すべての空白が重要です) 516|827|943 278|394|615 349|615|872 ---+---+--- 98 |4 2|156 465|189|237 12 |5 6|489 ---+---+--- 892|743|561 634|951|728 751|268|394 出力は、行ごとに1つの数値でフォーマットされます(x,y):z。xおよびyは、左上の1から始まり、右下に向かって増加します。zは追加する番号です。 この場合、これらはすべての有効な出力を次のようになります(3,4):3、(3,4):7、(5,4):3、(5,4):7、(3,6):3、(3,6):7、(5,6):3、および(5,6):7、これらのいずれかがボードを解決することができるようになると。 一意/解決された数独ボードが入力された場合、プログラムは改行を含めて何も印刷しません。 プログラムは、どのボードでも1時間以内に実行する必要があります(完全にブランクのボード、または1つのランダムな番号のボードを使用してテストすることをお勧めします...)。 得点: すべての空白を含めて、文字で合計(ゴルフ)コードサイズを取得します ... ボーナス: 1/2コードサイズ:プログラムが単一の感嘆符を出力し、解答が入力されていないボードがあると停止します。 1/2コードサイズ:プログラムが2つの感嘆符を印刷し、内部矛盾(同じ行/列/正方形で同じ2つの数字)が入力されたボードがあると停止する場合。
19 code-golf  game  sudoku 

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