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

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

3
14ペグのパズルを解く
前書き 一般的なパズルには、下の画像に示すように、ティー/ペグ用の15個の穴がある三角形のボードが含まれます。 一番上の穴を除いて、ボード内のすべてのペグから始めて、パズルのポイントは、チェッカーのようにペグを互いに飛び越えて、正確に1つのペグを残すことです。唯一有効な移動は、1つのペグを隣接するペグを越えて任意の方向に空の穴にジャンプすることです。ジャンプしたペグは、ボードから削除されます。有効な手が残っていない場合、プレイは終了します。 スペック あなたの仕事は、ペグパズルの完全なソリューションを見つけることができるプログラムを書くことです。考えられる解決策は複数あるので、プログラムは1つだけ印刷する必要があります。 プログラムは入力を受け取りません。外部ソースからのデータの読み取りは許可されていません。 この形式を使用して、残りの1ペグの結果が得られる13のムーブのリストを印刷します。 Peg 1 jumps Peg 3 to Hole 6. 穴/ペグには上から下、左から右に番号が付けられているため、上部のペグ/穴は1で、右下が15になるまで番号が付けられます。 プログラムは実行時にソリューションを見つける必要があります。プログラムで解決する以外の方法でソリューションを直接印刷すると、自動的に失格になります。 ボーナス:複数のユニークなソリューションを出力できる場合は、10ボーナスポイントを受け取ります(空白行で区切って印刷できます)。 ボーナス:数値15がソースコードのどこにも表示されない場合、5ボーナスポイントを受け取ります。 得点 これはコードゴルフなので、正しい答えを出力する(バイト数による)最短のソリューションが勝者となります。総バイト数からボーナスポイントが差し引かれます。プログラムの実行のサンプル出力とideone、可能であればプログラムの実行を示すリンクまたは同様のサイトへのリンクを提供してください。

8
上昇型エンドウ豆パターンジェネレーター
エンドウ豆パターンに慣れていない人にとっては、それは単純な数学的パターンです。 このパターンには複数のバリエーションがありますが、1つに焦点を当てます。 エンドウ豆パターンの上昇 次のようになります。 1 11 21 1112 3112 211213 ... 次の行を取得するのは本当に難しいようですが、それは本当に簡単です。次の行を取得する方法は、前の行で数字が繰り返された回数を数えることです(最低から最大まで数え始めます)。 one one one two ones one one, one two three ones, one two two ones, one two, one three ... 要件/ルール: から始めます 1 スニペットになります 生成する行数を指定する方法が必要です(たとえば5 、最初の5行が表示されます) コードはできるだけ短くする必要があります 最低から最大まで数え始める必要があります(昇順のバリエーション)
8 code-golf  math 

3
宝くじに当選しましたか?
私はこの質問への回答を送信し、現在米国で現在行われているMegaMillions宝くじの流行に関するいくつかのニュース記事を見ました。このニュース記事は、個人が運を試すために一度に20,000ドル相当のチケットを購入した(これは20,000 セットの確認用です!)と述べています。 そのため、購入した大量のチケットで、ジャックポットだけでなく賞品を獲得できるかどうかをすばやく判断する方法について考えました。 その場合の課題は次のとおりです。 概要: 引数として数値の文字列を受け入れる関数またはプログラムを作成し(STDIN、または選択したファイルから読み取る)、少なくとも最低支払額が支払われたチケットの数を返します。 コードの詳細: 入力は、購入されたチケットごとに1つずつ、一連​​の行で構成されます。当選番号の先頭には0が付けられ、抽選番号の先頭には1から始まる増分番号が付けられます(例を参照)。 入力は、抽選や当選番号など、毎回完全にランダムな数字のセットである必要があります。 入力は、1 <= n <= 20,000の任意の数のチケットnを受け入れる必要があります。(0チケットが実行されないと仮定します。) 入力の各行には、1行あたり7つの数字があります。1つは上記のプレフィックス用、5つは標準ボール用、もう1つは「マッチ」ボール用です。(以下のロトの詳細を参照) 入力は任意の方法で区切ることができます(空白、セミコロンなど)。 出力は、すべての勝利抽選と勝利額のリストでなければなりません。(それであなたはどちらを提出するか知っています。) 出力リストは、勝ち額順に並べる必要があります。(あるチケットで$ 2を獲得した場合、別のチケットで$ 10,000を獲得した場合、誰が気にしますか?) 複数のチケットが同じ金額を獲得した場合、それらのチケットの順序は関係ありません。 出力には、勝った合計金額のリストも表示されます。 ロトの詳細: MegaMillionsゲームの標準ルールが適用されます。これは、現在非常に暑いためです。 ドローは、2つの別々の数字のプールからの6つの数字で構成されます。1から56までの5つの異なる数字と、1から46までの1つの数字(マッチボール)です。 ジャックポットは、抽選で6つすべての当選番号を照合することによって獲得されます。 ジャックポット以外の賞は以下のように授与されます(下の画像を参照)。 (メイン)+(マッチ)=(支払い) 5 + 1 =ジャックポット 5 + 0 = $ 250,000 4 + 1 = $ 10,000 4 + 0 = $ 150 …

27
セクシーな素数を生成する
セクシーな素数は(n, m)、nとのm両方が素数であるのようなペアですm = n + 6。 整数を取る関数を作成し、0からその整数までの素数をチェックして、配列の配列を返す必要があります。 たとえば、listSexy(30)戻り値[[5,11], [7,13], [11,17], [13,19], [17,23], [23,29]]または同等のものでなければなりません。 これはコードゴルフなので、バイトカウントが最短のプログラムが勝ちます!

12
ファインマンチャレンジ暗号#1を復号化する関数を作成する
ファインマンチャレンジ暗号#1は、次のとおりです。 MEOTAIHSIBRTEWDGLGKNLANEAINOEEPEYST NPEUOOEHRONLTIROSDHEOTNPHGAAETOHSZO TTENTKEPADLYPHEODOWCFORRRNLCUEEEEOP GMRLHNNDFTOENEALKEHHEATTHNMESCNSHIR AETDAHLHEMTETRFSWEDOEOENEGFHETAEDGH RLNNGOAAEOCMTURRSLTDIDOREHNHEHNAYVT IERHEENECTRNVIOUOEHOTRNWSAYIFSNSHOE MRTRREUAUUHOHOOHCDCHTEEISEVRLSKLIHI IAPCHRHSIHPSNWTOIISISHHNWEMTIEYAFEL NRENLEERYIPHBEROTEVPHNTYATIERTIHEEA WTWVHTASETHHSDNGEIEAYNHHHNNHTW ソリューションは次のように説明されます。 これは単純な転置暗号です。テキストを5列の断片に分割し、右下から上に向かって読み取ります。結果は、チョーサーのカンタベリー物語のミドルイングリッシュでのオープニングラインです。 それは: WHANTHATAPRILLEWITHHISSHOURESSOOTET HEDROGHTEOFMARCHHATHPERCEDTOTHEROOT EANDBATHEDEVERYVEYNEINSWICHLICOUROF WHICHVERTUENGENDREDISTHEFLOURWHANZE PHIRUSEEKWITHHISSWEETEBREFTHINSPIRE DHATHINEVERYHOLTANDHEETHTHETENDRECR OPPESANDTHEYONGESONNEHATHINTHERAMHI SHALVECOURSYRONNEANDSMALEFOWELESMAK ENMELODYETHATSLEPENALTHENYGHTWITHOP ENYESOPRIKETHHEMNATUREINHIRCORAGEST HANNELONGENFOLKTOGOONONPILGRIM チャレンジ: 暗号を復号化する関数を記述します。 出力には改行やスペースは必要ありません。 入力には改行やスペースがありません。 最短のソリューションが優先されます。 (他の2つの暗号を解くことができる場合のボーナスポイント:P) 私の試み(PHP 77 70): $b=strrev($a);for($i=0;$i<5;$i++)for($j=0;$j<381;$j++)$r.=$b[$i+$j*5]; http://codepad.org/PFj9tGb1
8 code-golf 

5
可能な単語の四角形を見つける
ジョニーはクロスワードパズルを作成しようとしていますが、単語を互いに一致させることが困難です。 彼はいくつかの単純な単語の長方形を考え出しました。つまり、長方形を形成する単語のグループで、すべての水平および垂直のパスが単語を形成します。 //2x2 PA AM //2x3 GOB ORE //3x3 BAG AGO RED //3x4 MACE AGES WEES ただし、優れたパズルを作成するには、3x4よりやや大きい単語の長方形が必要です。長い間コードの長いブロックがジョニーのようなカジュアルなプログラマーにとって非常に威圧的であるため、ジョニーは、アレンジメントの手紙を何時間も苦労する代わりに、彼のために、そしてできるだけ少ない文字でこれを行うプログラムを持つことを好みます。 与えられた 単語がアルファベット順に改行で区切られているテキストファイル辞書 四角形の単語の行と列の数を指定する入力(提供することができますが、選択したプログラミング言語で最も便利です) 少なくとも1つの単語の長方形を生成します。与えられたレキシコンとディメンションで単語の長方形を生成することができない場合、プログラムは動作を定義する必要はありません。プログラムが64文字を超える長方形、またはいずれかの方向に8を超える寸法を持つ長方形を生成できる必要はありません。プログラムは、妥当な時間内、たとえば30分以内に完了する必要があります。 編集:NxNの四角形を使用している場合は、N文字の長さの単語のみを含む小さな辞書ファイルを使用できます。

4
4番目の力(Juzuk)
1939年、ジュズクは自然数の4乗を生成する方法を説明しました。次のように自然数をグループ化します。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 2番目のグループごとにスクラッチします。 1 4 5 6 11 12 13 14 15 ... 残りのn個のグループの合計はn ** 4です。 入力:なし タスク:Juzukの方法を使用して、100 ** 4までの4乗を出力します。 出力: 0(オプション)1 16 81 ... 100000000

2
単純な幾何学的問題
この問題(下記を参照)は、高校プログラミングリーグのコードゴルフチャレンジとして与えられています。コンテスト中に提出された最短のコードは、Rubyで177バイト、Python 2.5で212バイト、Cで265バイトでした。だれでも短くできますか?他のプログラミング言語も許可されています。 問題の定式化:与えられた8つの整数:-1000 <x1、y1、x2、y2、x3、y3、x4、y4 <1000。 、(x1、y2)、(x2、y2)、(x2、y1)およびP2 =(x3、y3)、(x3、y4)、(x4、y4)、(x4、y3)。 * If the rectangles do not intersect print *nothing*. * If there is exactly one point in common print *point*. * If the intersections of P1 and P2 is a line segment print *line*. * If they have a rectangular area in common …

4
言語算術のサブセット
一緒に追加されたいくつかの同じ数列の言語算術ソルバーを実装します。 TWO + TWO ----- FOUR REPEAT REPEAT REPEAT + REPEAT -------- ANDSTOP SPEED + SPEED ------- KILLS いくつかの制限があります。各文字は異なる数字を表す必要があり、文字をゼロにすることはできません。 オペランドの関数としてソルバーを実装すると、繰り返しの合計と数が解のリストを返します(ソリューション:結果のオペランドと合計のタプル)。例えば: f(['T','W','O'], ['F','O','U','R'], 2) == [(734, 1468)] 変数を文字として表す必要はなく、ソリューションでハッシュを使用する必要もありません。ブルートフォース検索が許可されました。 最短のコードが勝ちます。
8 code-golf 

22
Peterのキーボードパターンを表示する
次のレイアウトのシンプルなキーボードを想定します。 1 2 3 4 5 6 7 8 9 0 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 . , ? ! Peterのキーボードパターンは、キーボードの左上から開始して生成でき、最初の3文字と改行を表示します。1文字上にシフトし、2番目、3番目、4番目のキーを表示します。行の終わりに到達すると、次の行の終わりに続き、その行の先頭に到達するまで後退し、次の行に進み、最後の行の先頭に到達するまで続きます。 。 これはピーターのキーボードパターンです。 123 234 345 456 567 678 …

1
ランダムセンテンスジェネレーター
コンテキストフリーの文法stdinと生成する文の数を読み取り、文法からその数のランダムな文を生成する任意の言語でできる限り短いプログラムを記述します。 入力 入力は次の形式になります。 n <START> {"<A>":["as<A>df","0<A>","<B><C>","A<A>", ...], "<B>":["1<C>1","\<<T>>",...], ...} n生成する文の数です。 <START>開始の非終端記号の識別子です。 文法は{}で囲まれ、次のようにフォーマットされます。 ルールは次の形式"<S>":[productions]です。 <S>非端末の識別子です。 ルールはコンマで区切られます。 ルールの右側は、二重引用符で囲まれた文字列で、最初と最後の文字はそれぞれ「<」と「>」です。残りの文字は[A-Z](大文字のアルファ)である必要があります。 productionsプロダクションを表す、二重引用符で囲まれた文字列のカンマ区切りのリストです。ルールを構成する空白文字を含むすべての文字は、終端記号です。ただし、山かっこ("<"と">")で囲まれている文字は、非終端記号であり、別のルールの左側になります。開き山かっこはエスケープできますが、終わり山かっこをエスケープする必要はありません。 プロダクションには、改行または改行エスケープシーケンスは含まれません。 出力 生成された各文をstdout末尾に改行を付けて印刷する必要があります。 テストケース 5組の括弧の組み合わせ: 5 <S> {"<S>":["<S><S>", "(<S>)", ""]} 結果の例: (())() () ()()() (())(()())((((()))()())) 4後置算術式(文字列内の空白は重要であり、他の場所では空白は重要ではないことに注意してください): 4 <S> {"<S>":["<N>", "<S> <S> <O>"], "<O>":["+","-","*","/"], "<N>":["<D><N>", "<D>"], "<D>":["1","2","3","4","5","6","7","8","9","0"]} 結果の例: 1535235 76451 + 973812 312 734 …

2
2Dブール配列を(直線)ポリゴンに変換
チャレンジ 2次元のブール配列(同等に、単色のビットマップ)を指定して、「真」(1)である領域の輪郭を表す一連のポリゴンを出力するプログラムを記述します。 入力は、'#'(ハッシュ)、' '(スペース)、および\n(改行)文字のシーケンスとして提供されます。行の長さが異なる場合があります。その場合、欠落している部分はスペースと見なされます。出力は、(改行で区切られた)ポリゴンのリストである必要があります。各ポリゴンは、(コンマで区切られた)座標のリストで表されます。 例と要件 座標は時計回りの順序でリストする必要があります。入力: # 許容できる出力は次のとおりです。 (0,0), (1,0), (1,1), (0,1) (1,0), (1,1), (0,1), (0,0) (1,1), (0,1), (0,0), (1,0) (0,1), (0,0), (1,0), (1,1) 互いに素な領域は複数のポリゴンを返す必要があります。入力: # # 出力例(実際の出力は2行で構成される必要があります): (0,0), (1,0), (1,1), (0,1) (2,0), (3,0), (3,1), (2,1) ポリゴンの穴は、別のポリゴンとして、反時計回りの順序でリストする必要があります。入力: ### # # ### 出力例: (0,0), (3,0), (3,3), (0,3) (1,1), (1,2), (2,2), (2,1) …

7
最短のポートスキャナー
リモートコンピューターの開いているポートに接続して、開いているかどうかを確認する最短のプログラムを記述します。(これはポートスキャナーと呼ばれます) コマンドライン引数から入力を受け取ります。 your-port-scanner host_ip startPort endPort startPort <endPort(およびendPort - startPort < 1000) 出力:その範囲の間のすべての開いているポートは、スペースまたはカンマで区切る必要があります。
8 code-golf 

4
クロスワードグリッドの検証
提案されたクロスワードグリッドを検証します。 エントリは、提案されたグリッドを単純にテストして、クロスワードソルバーを満足させるための一連の条件を満たすかどうかを判断する完全なプログラムである必要があります。 入力 入力は、クロスワードグリッドを表すファイルの名前になります。入力ファイル名は、引数として、標準入力で、またはハードコーディング以外の従来の手段で渡すことができます。 グリッドファイル形式:最初の行は、空白で区切られた2つの整数定数MとNで構成され[#A-Z ]ます。その行の後には、から選択されたN文字(および新しい行)で構成されるM行があります。これらの文字は'#' 、ブロックされた四角、' '内容が不明なパズルの開いた四角、およびその文字を含む開いた四角を示すように解釈されます。 出力 プログラムは有効なグリッドに出力を生成せず、通常の終了状態で終了します。提案されたグリッドが失敗した場合、実行環境でサポートされていれば、プログラムは診断エラーメッセージを生成し、異常終了状態(UNIXでは0ではない)で終了します。エラーメッセージには、違反している有効性の条件と違反している正方形の場所の両方が示されているはずです。これらの事実を伝える手段を自由に選択できます。 妥当性の条件 有効なグリッドには、1文字の長さ(最小長を入力パラメーターにするための追加のクレジット)の回答(横または下)がなく、通常の対称性を示します。通常の対称性は、クロスワードが後も同じままであることを意味します(同じ操作の3つの同等の説明)。 それ自身の中心を通した反射 垂直方向と水平方向の両方の反射 180度回転 テスト入力と期待される出力 パス: 5 5 # ## # # # ## # 短い答えに失敗します: 5 5 ## ## # # # ## ## 対称性に失敗: 5 5 # ## # # # # ## # さておき これは、クロスワードに関連するいくつかの課題の2番目です。私は一貫して一貫したファイル形式のセットを使用し、その過程でクロスワード関連ユーティリティの立派なスイートを構築する予定です。たとえば、後続のパズルでは、このパズルの入力と出力に基づいてクロスワードのASCIIバージョンを印刷する必要があります。 このシリーズの以前の課題: …

4
バイナリ検索(「二分」)ツール
コンピューターソフトウェアプログラムを破壊するソースコードのリビジョンを識別するために使用されるバイナリ検索アルゴリズムを実装します。ツールは、検索する最も古いおよび最新の番号付きリビジョン(両方とも正の整数)を指定する2つの引数を取る必要があり、比較を行うための2つのオプションがあります。 シェルコマンドを実行し./test N、Nはリビジョン番号です。テストに合格した場合(つまり、リビジョンが良好である場合)、終了コード0が返されます。 テストに合格した場合test(N)に戻る関数を呼び出します。そうでないtrue場合は戻りfalseます。 標準出力は最初の不正なリビジョンの番号でなければならず、ツールのソースコードをできるだけ短くするようにしてください。楽しい!
8 code-golf 

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