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

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

20
数独ソリューションチェッカーを作成する
数独ソリューションチェッカーを作成する ここには数独ソルバーの大群がありますが、私はあなたにできる限り小さなソリューションチェッカー(コードゴルフ)を作成してほしいです。 有効なエントリは、引数として9x9配列(コマンドラインでシリアル化された参照で渡される、または任意に取得する)として受け取るか、最終グリッド用の9行の9行の入力ファイルを受け入れることができます。 。以下の入力例を参照してください。 有効な入力は10進数(1〜9)でなければなりません 欠落している、空の、余分な、数値以外の位置、または1〜9以外の数値を持つ位置は、ゼロ以外の結果を返すか、エラーを出力するか、またはその両方によって無効な入力として拒否されます。 プログラムは、各数値が列ごとに1回、行ごとに1回、3x3サブグリッドごとに1回表示されるかどうかをテストする必要があります。合格した場合は「0」を返し、そうでない場合はゼロ以外の結果を返します。 外部リソース(ウェブサイトなど)の使用は避けてください。 ソリューションがスタンドアロンプ​​ログラムである場合、終了ステータスが「0」であるか「Pass」または「Fail」でゼロ以外である場合は、終了しても問題ありません。 最小の答えを当てましょう! 入力例: c配列: int input[9][9]={{1,2,3,4,5,6,7,8,9}, {4,5,6,7,8,9,1,2,3}, {7,8,9,1,2,3,4,5,6}, {2,3,1,5,6,4,8,9,7}, {5,6,4,8,9,7,2,3,1}, {8,9,7,2,3,1,5,6,4}, {3,1,2,6,4,5,9,7,8}, {6,4,5,9,7,8,3,1,2}, {9,7,8,3,1,2,6,4,5} }; ファイル: 123456789 456789123 789123456 231564897 564897231 897231564 312645978 645978312 978312645 9つのサブグリッド: +---+---+---+ |123|456|789| |456|789|123| |789|123|456| +---+---+---+ |231|564|897| |564|897|231| |897|231|564| +---+---+---+ |312|645|978| |645|978|312| |978|312|645| +---+---+---+

13
それで…StackOverflowスコアは何ですか?
これは単純なものです。数値を入力すると、その特定のIDを持つStack Overflowユーザーの名前と評価スコアを返します。プログラムは、常に有効で既存のユーザーIDが与えられていると想定できます。 例:入力764357(StackOverflowでの私のユーザーID)が与えられると、プログラムはLegoStormtroopr 3,088(およそ)戻りますが、変更される可能性があります。 次のURLを取得します。「/programming//users/」または「http://api.stackexchange.com/2.1/users/」は無料です。使用するURLlength of your program - 31 or 39に応じてスコアはどちらかを宣言してください。これにより、人々がURL短縮サービスを悪用することを防ぎます。 編集:そして、スタックオーバーフローをクエリし、名前とスコアのみを返すカスタムメイドのAPIを呼び出しません。 しかし、公式のAPIを知っている場合、それは完全に合法です。 edit2:入力例が必要な場合:以下に自分のIDを指定しました。他の人を助けるために、自分のID、ユーザー名、スコアを自由に追加してください。繰り返しますが、これはメインのStack Overflowサイト用です。 764357 returns LegoStormtroopr 3,088

3
四つんばいパズル
4つの4パズルは、 0から所定の最大値まですべての数に到達するために正確に4つ4S(なし他の数)および動作の定義されたセットを使用することを含む人気のある娯楽数学パズルです。 このバージョンでは、次の演算子のみが許可されます。 任意のグループ化記号を使用できます 加算(+)、減算(-)、乗算(*)、除算(/) 階乗(!)、ガンマ関数(Γ) べき乗(^)、平方根(√) 連結(例:442 4秒) 小数点(例えば4.42である4、オーバーバーS)(例えば。.4~ = 4/9) 操作の標準順序が適用されます。 0〜100の範囲の入力が与えられた場合、プログラムはその入力に対する正しいソリューションを生成する必要があります。プログラムが入力に対して無効なソリューションを出力した場合、そのプログラムは無効です。 たとえば、入力がの0場合、プログラムはを生成し44-44ます。 外部モジュールの使用は許可されていません。_.4~オーバーバー演算子にのみ許可されます-つまり4、小数点の後ろにできるのは1つだけです。 これはコードゴルフであるため、最短のソリューションが優先されます。 編集:明確にするために、プログラムは上記の操作のセットを正確に 4 4秒間に適用して出力する必要があります-これ以上でもそれ以下でもありません。また、.4 = 4/10は有効な用語であり、1つのみを使用していると見なされ4ます。

13
整数を英語の単語に変換する
このゴルフの目標は、整数を英語の単語に変換することです。 プログラムは入力を求めます。この入力が整数でない場合、print NaN。整数の場合、英語の単語に変換し、これらの単語を出力します。最小入力:0(ゼロ)。最大入力:9000(9千)。 したがって、5戻るfive(大文字小文字は関係ありません)、または500戻る(ダッシュは関係ありません)。 five hundredfive-hundred 他のいくつかのルール: A oneの前hundredまたはthousandオプションですが:one hundred正しいですが、hundredあまりにも(入力された場合100、もちろん)。 andたとえば、単語one hundred and forty fiveもオプションです。 空白が重要です。したがって、、またはは正しいですが500、そうではありません。five-hundredfive hundredfivehundred がんばろう!
21 code-golf 

4
サンドイッチを作る
課題:この動作につながるメイクファイルを作成します。 % make me a sandwich What? Make it yourself % sudo make me a sandwich Okay ルール: ユーザーはrootではなく、の使用を許可されているLinuxマシンで動作するはずsudoです。 Okay短いmakeコマンド(例sudo make sandwich)に言ってはいけません。 2番目のコマンドはsudo、2番目の呼び出しではなく、のために機能するはずです。 ガイドライン: 短くしてください(結局、これはCode Golfサイトです)。 実際にサンドイッチを作ってくれるといいですね。 なぜsudo違いが生じるのかを巧みに隠そうとします。 勝者は投票によって決定されます。

30
入力文字列内のすべての文字の出現回数を表示する
コードはキーボードからの入力として文字列を受け取る必要があります。 The definition of insanity is quoting the same phrase again and again and not expect despair. 出力は次のようになります(特定の順序で並べ替えられていない)。 : 15 . : 1 T : 1 a : 10 c : 1 e : 8 d : 4 g : 3 f : 2 i : 10 h : 3 …

4
最適な短縮形ローマ数字ジェネレータ
目標: 数値を入力として受け取り、その数値の短縮ローマ数字を出力として返す関数を作成します。 ローマ数字記号: Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1,000 「速記ローマ数字」と言うときの意味の例として、1983年を表すローマ数字を見つけることを考えてみましょう。それは私が生まれた年だからです。1つのオプションは、これを通常の方法(10文字)で行うことです。 1983 = MCMLXXXIII =(1000-100 + 1000 + 50 + 30 + 3) もう1つのオプションは、簡単な方法(6文字)で行うことです。 1983 = MXVIIM =(1000-(10 + 10)+ 1000 + 3) これが何を意味するか知っていますか?!?!! ?? 私がローマ人だったら、生年月日を書くたびに4文字を節約できたでしょう!うおう! しかし、興奮する前に、書くべき質問があります。したがって、おそらく、同じページにいるように、速記のローマ数字のルールを定義する必要があります。 ショートハンドローマ数字ルール: 考慮すべき文字がなくなるまで、シンボルを常に左から右に検討してください。 現在のシンボルの右側に、より高い値のシンボルがない場合: 現在のシンボルの値をこのローマ数字の積算合計に追加します。 …

11
自分の言語ではなく自分の言語を解釈しますか?
「Xを解釈する」という多くの課題があります。Xは単純な言語です。私の意見では、それはあまりにも退屈です。インターネット上のすべての先延ばしの人々に何か面白いことをするために、この挑戦​​を試みることができます: チャレンジ 言語を選択してください$LANG。$LANGチューリング完全プログラミング言語またはプログラミング言語のチューリング完全サブセットのいずれかです。あなたの言語の機能$LANGを解釈のために省略した場合、あなたの提出物もで書かなければならないので、あなた自身のプログラムにもそれを使用してはならないことに注意してください$LANG。 で$LANG書かれたコンパイラ/インタプリタを記述し$LANGます。evalこのコンパイラを作成するために使用できる言語のすべての機能(および友人を含む)を使用できます。タスクをより困難にするために、1つの制限があります。プログラムは$LANG、インタープリター/コンパイラー自体を除くすべての有効なプログラムを解釈/コンパイルできる必要があります。解釈/コンパイルされるプログラムがインタープリターまたはコンパイラー自体である場合(ファイル名に関係なく)、プログラムはインタープリターまたはコンパイラーの機能とはまったく関係のないこと(barfingや印刷など)を行う必要がありますHello, world!。 このタスクをさらに複雑にするために、プログラムはコンパイルまたは解釈時に独自のソースを読み取ってはなりません。 仕様書 このタスクはコードゴルフです。正しい文字が最も少ない投稿が優先されます。同点の場合、最初に提出されたソリューションが勝ちます。 プログラム/スクリプトは、ファイルから解釈されるプログラムを読み取る必要があります。パスと名前をハードコーディングできます。ファイルが読み取られたら、ファイルを別のファイルにコンパイルするか(システムで実行可能である必要があります)、直接実行することができます。$LANGファイル読み取り機能が不足している場合は、に適合するコードを読み取る別の方法を選択できます$LANG。$LANG別の言語のサブセットとして選択することはできませんが、ファイル読み取り機能は削除されます。 通常のコードゴルフ規則が適用されます。つまり、この課題を解決するために作成した個人のペット言語は、ソリューションがそれを使用して簡単になった場合は禁止されています(ソリューションを正確に実装する単一文字プログラムを定義するなど)。ルールの乱用は奨励されます。

25
正多角形を描く
このコードゴルフの目標は、辺の数と半径(中心から頂点までの距離)を指定して、通常のポリゴン(辺の長さが等しいポリゴン)を描くことです。 辺の数と半径は、ファイル、STDIN、または単なる古い変数を介して入力できます。あなたの言語で短いものを使用してください。 ASCIIアートの代わりに画像が実際に描画される場合、総文字数/バイトの-25%。

4
多角形が凸面かどうかを判別
入力ポリゴンが凸面かどうかを判断するプログラムを作成します。ポリゴンを含む一行で指定されたN、頂点の数を、次いでN含む行のxとyの各頂点の座標を。頂点は、任意の頂点から時計回りにリストされます。 例1 入力 4 0 0 0 1 1 1 1 0 出力 convex 例2 入力 4 0 0 2 1 1 0 2 -1 出力 concave 例3 入力 8 0 0 0 1 0 2 1 2 2 2 2 1 2 0 1 0 出力 convex xおよびyは整数、N <1000、および| …

15
お気に入りの言語でランダムなプログラムを生成する[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 閉じた3年前。 ランダムに生成された入力を使用してコンパイラーをテストしたことは皆耳にしました。あなたの仕事は、お気に入りの言語で有効なプログラム(未定義の動作を含まない)を生成するプログラムを書くことです。生成プログラムの言語は、生成プログラムの言語と同じである必要はありません。 プログラムは、乱数ジェネレータのシードとして使用できる整数を引数として受け取ります。生成されるプログラムは、異なる変数名または定数だけでなく、構造的に異なるものでなければなりません(シードが異なる場合)。 例: $ ./generate 1 int main() { return 0; } $ ./generate 2 #include <math.h> int main() { return (int) pow(4, 3); } 回答にいくつかの出力を含めてください。 最短のソリューションが勝ちます。投票数に基づいて少額のボーナスを提供しますので、最も創造的なソリューションに投票してください。

17
ケンブリッジ転置
すべてではないにしても、ほとんどの人が何らかの点でこれに出くわしたと思います。 Cmabrigde UinervtisyのrscheearchへのAoccdrnig、それはwrodのltteersがwordでmttaerであるとは思わない、olny iprmoetnt tihngはrhtit pclaeであります。rsetはtoatl msesである可能性があり、あなたはそれをwouthit porbelmに座っていることができます。Tihsはbcuseaeであり、istlefがervey lteterを支持したのではなく、wloheとしてwrodを食べました。 任意の量のテキストを入力するプログラムを作成します。テストのために、上記のテキストのスクランブルされていないバージョンを使用してください。 次に、プログラムは、各単語の最初と最後の文字を除いて、4文字以上の長さの各単語の文字をランダムに転置する必要があります。 他のすべてのフォーマットは同じままにする必要があります(大文字と句読点など)。 テストテキスト: ケンブリッジ大学の研究者によると、単語の文字がどのような順序であるかは関係ありません。唯一重要なことは、最初と最後の文字が正しい場所にあることです。残りは完全に混乱する可能性がありますが、問題なく読むことができます。これは、人間の心がすべての文字を読むのではなく、単語全体を読むからです。 いつものように、これはコードゴルフです。最短のコードが優先されます。

5
「申し訳ありませんが、若い男性ですが、それはずっと亀です!」
Lindenmayerシステムを実行する A Lindenmayerシステム(またはL-システム)に関連しThue及びポストシステムとで使用されている植物モデリング及びフラクタル世代。 Lシステムは、シンボルアルファベットからのシンボルがシンボルの置換シーケンスにマッピングされる文字列書き換えによって記述されます。これらのマッピングのコレクションは、適切なLシステムを構成します。 Prusinkiewiczによって考案されたグラフィカルな出力方法は、タートル描画コマンドとして、指定された反復回数のマッピングが初期シーケンスに適用された後、結果のシーケンスを解釈します:前方、後方、左、右、など。反復回数が異なるとサイズが大幅に異なる画像が生成される可能性があるため、これには図面のスケールを制御するための追加コードが必要になる場合があります。 あなたの仕事は、最小数の文字でLシステムを実行することです。プログラムは、適切な入力(ファイル、コマンドライン、ソースの外部をお願いします)を提供することにより、ウィキペディアのページからドラゴンカーブと分岐ステムの両方をレンダリングできる必要があります。 これはコードゴルフです。 編集:これは私が町の周りに投稿したいくつかの例です。SO / rotate-to-northへの回答{ 私が最初にLシステムを発見した場所 }、SO / how-to-program-a-fractalへの回答、SO / recursion-in-postscriptへの回答、comp.lang.postscriptディスカッション/リサイタル、追記L-システム収集、codegolf.SE/draw-a-sierpinski-triangle {自分とthomasW間の競争の起源}。

30
世界はエドで終わる
ACM Winter Programming Contest 2013から直接取られました。あなたは文字通り物事を好む人です。したがって、あなたのために、世界の終わりが編集されます。「The」と「World」の最後の文字が連結されました。 文を取得するプログラムを作成し、その文の各単語の最後の文字をできるだけ少ないスペース(最小バイト)で出力します。単語はアルファベットの文字以外の文字(ASCIIテーブルでは65〜90、97〜122)で区切られます。つまり、アンダースコア、チルダ、墓、中括弧などが区切り記号になります。各単語の間に複数のセパレータが存在する場合があります。 asdf jkl;__zxcv~< vbnm,.qwer| |uiop->-> flvmrp pigs, eat dogs; eat Bob: eat pigs-> ststbts looc si siht ,gnitirw esreveR-> citwR 99_bottles_of_beer_on_the_wall->sfrnel
21 code-golf  string 

28
数字が幸せかどうかを見つけますか?
ハッピーナンバーは、次のプロセスで定義されます。任意の正の整数で開始し、数字をその数字の2乗の合計で置き換え、数字が1になるまで(それが留まる)、または1を含まないサイクルで無限にループするまでプロセスを繰り返します。このプロセスが1で終わるのは幸せな数字であり、1で終わらないものは不幸な数字(または悲しい数字)です。それが幸福であるか不幸であるかに関係なく、数字を印刷します。 Sample Inputs 7 4 13 Sample Outputs Happy Unhappy Happy 注:1,000,000,000未満の数値については、プログラムに10秒以上かかることはありません。

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