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

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

10
メタゴルフチャレンジ
その課題については、その課題を解決する必要があります。 コンテストは終了しました!質問の終わりを確認してください 仕様: 最小のコード(任意の言語*)を作成します。 回答のスコアは次の合計です。 空白なしのコード長。 同じ言語を使用した回答の数の2乗。 コンテストで最も大きい言語の名前からあなたの言語の長さを引いた長さ。 マイナス投票からマイナス投票(別名マイナス投票) ユーザーの位置とスコアを書きます。 各ユーザーが回答を1つだけ書くことができます。 最も低いスコアが勝ちます。 テスト: そのため、コンテストの終わりに、可能な入力は(STDIN)です。 列は次のとおりです。ユーザー名、言語、コード長(空白なし)、TotalVotes UserA Python 100 1 UserB Perl 30 2 UserC Java 500 3 UserD Brainfuck 499 4 UserE Perl 29 5 ユーザー名に「My User Name」のようなスペースがある場合、「MyUserName」になるため、入力には常に正確に4列あります。 出力は(STDOUT)になります。 1 UserE 33 2 UserB 37 3 UserA 103 4 UserD …

5
Just Another Perl Hacker [終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 閉じた3年前。 クラシックコードゴルフチャレンジ。最もわかりにくいPerlプログラムを作成して、「Just another Perl hacker」を出力します。ここだその上にWikipediaの記事が。3行/ 70文字に収まる場合はボーナスポイント。

13
ラングトンのアリアスキーアート。
ラングトンのアリの道を描きます。 説明 平面上の正方形は、黒または白のさまざまな色で表示されます。1つの正方形を「アリ」として任意に識別します。アリは、各ステップで4つの基本方向のいずれかに移動できます。アリは以下のルールに従って移動します。 白い正方形で、90°右に曲がり、正方形の色を反転させて、1ユニット先に進みます 黒い四角で、左に90°回転し、四角の色を反転し、1単位先に進みます 仕様書 入力:0から725までの整数N(両端を含む)。 出力:ステップNの時点でのアリの「パス」を表す17 x 17のグリッド。 ルール アリは右向きになります(3時)。 アリはグリッドの中心から始まります。 利用_#@それぞれ白四角、黒四角及びアリのために。 グリッドは最初は完全に白です。 インタプリタ言語で完全なプログラムまたは関数を作成できます。 stdinまたは引数による入力。 例 更新:ケースのN = 450出力が間違っていました。 N = 0 _________________ _________________ _________________ _________________ _________________ _________________ _________________ _________________ ________@________ _________________ _________________ _________________ _________________ _________________ _________________ _________________ _________________ N = 1 _________________ _________________ _________________ _________________ _________________ _________________ …

30
Hello Worldウィンドウ
hello world insideと表示するウィンドウを作成します。OKボタンやキャンセルボタンを内部に置くことはできません。それは、こんにちは世界と言う単なる窓でなければなりません。私はウィンドウフレームの内容やウィンドウの外観については気にしませんが、その中にはhello worldのみを表示する必要があります。 例: 最短のコードが優先されます。 編集:申し訳ありませんが、ウィンドウが実際にそこにとどまらなければならないヨハネス・クーン、すぐに閉じないかもしれません。私はこのシナリオを考えなかったので、このことを説明しませんでした。 編集2:私たちは現在3つの同点回答(20文字)を持っています。誰が勝者になるべきかについての提案は大歓迎です。

18
クリス・パインの「ろうおばあちゃん」
私はRubyLearningのメンターであり、私たちが生徒に提供するエクササイズの1つは、クリス・パインの本「Learn to Program」の「ろうおばあちゃん」エクササイズです。説明は次のとおりです。 ろうおばあちゃんプログラムを書く。おばあちゃんに何を言っても(入力したものは何でも)、彼女は叫ぶ(すべて大文字で入力する)場合を除き、「ハァッ!声を上げて、息子よ!」あなたが叫ぶと、彼女はあなたの声を聞くことができ(少なくとも彼女はそう思う)、「いいえ、1938年以来じゃない!」と叫ぶ。 あなたのプログラムを本当に信じられるものにするために、おばあちゃんは毎回異なる年を叫んでください。多分、1930年から1950年の間の任意の年。 「BYE」と叫ぶ。 いくつかのコースを繰り返した後、私はこれをどれだけ小さくできるかを試してみましたが、今では112文字になりました。 puts (s||='').upcase==s ? "NO, NOT SINCE #{1930+rand(21)}!":"HUH?! SPEAK UP, SONNY!" until(s=gets.chomp)=="BYE" ここでRubyはすでに非常にうまく機能していると思うので、あなたが選択した言語でこれを達成できる文字数が少ないことに興味があります。 編集:以下に投稿されたPerlソリューションは、 ruby -nle 'puts($_=="BYE"?exit: $_.upcase!? "HUH?! SEPAK UP, SONNY!":"NO, NOT SINCE #{1930+rand(21)}!")' 式は92文字n、lオプションとオプションはさらに2文字です。
22 code-golf  string 

30
最短電力セットの実装
問題定義 指定されたセットのpowersetを印刷します。例えば: [1, 2, 3] => [[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]] 各要素は別々の行に印刷されるため、上記の例は次のように印刷されます。 [] [1] [2] ... [1, 2, 3] サンプルコード(Dのpythonの例はこちら): import std.stdio; string[][] powerset(string[] set) { if (set.length == 1) { return [set, []]; } string[][] ret; foreach (item; powerset(set[1 .. $])) …

28
nの最後のゼロ以外の数字!
入力として1≤N≤1,000,000の整数を指定すると、N!の最後のゼロ以外の数字が出力されます。、どこ!階乗(1からNまでのすべての数値の積)です。これは、OEISシーケンスA008904です。 プログラムは、有効な入力のために妥当なマシンで10秒以内に終了する必要があります。 テストケース 1 => 1 2 => 2 3 => 6 4 => 4 5 => 2 6 => 2 7 => 4 8 => 2 9 => 8 10 => 8 100 => 4 1000 => 2 10000 => 8 100000 => 6 1000000 => 4 これはコードゴルフなので、バイト単位の最短コードが勝ちです!

26
最低ユニーク入札オークション
すべてのエントリに感謝し、締め切りは過ぎました。最終スコアは質問の最後にあります。かなり包括的な勝利を収めたPhiNotPiに おめでとうございます。 これは、キングオブザヒルの挑戦であり、その目的は、最も低いユニークな入札オークションで、どの対戦相手よりも頻繁に勝つプログラムを作成することです。 入力 入力として、プログラムは、次のようにスペースで区切られたすべての以前のラウンドの入札(行ごとに1ラウンド)を受け取ります。 10 4 12 11 12 4 7 3 3 1 2 9 15 1 15 15 9 3 3 21 6 4 3 8 6 13 1 入力の各列は、1つのボットの入札を表します。最初の列は受信プログラムの入札で、残りはランダムに生成された順序です。入力してくれたhammarとPeter Taylorに感謝します。 入力は、プログラムへの唯一のコマンドライン(マルチライン)引数として提供されます。 ./test1 '1 2 3 4 5 6 1 2' これは、プログラムをコマンドラインから実行できる必要があることを意味します。答えの一部として、呼び出しの例を挙げてください。 最初のラウンドでは、対戦相手のボットの数を知らせる手段としてのみ、入力は0sの行(ボットごとに1 行)になります。 出力 プログラムは、1から100(両端を含む)の範囲の整数として入札単価を出力する必要があります。 得点プログラム …

3
メタボウリングゴルフ
あなたの仕事は、最もユニークなバイトを持つ別のプログラム(B)を出力する最短のプログラム(A)を作成し、それが元のプログラム(A)を出力することです。基本的に、一対のウロボロスプログラムの半分(定期的な反復クイン)をゴルフし、残りの半分をボウリングしています。AとBは異なる言語である場合があります。 ルールとスコアリング 最終スコアは<number of unique bytes in B> / <number of bytes in A>です。最高スコアが勝ちます。理論上の最大スコアは256であることに注意してください。 プログラムAは少なくとも1バイトの長さが必要です プログラムBを完全に無操作で構成することはできません。つまり、少なくとも1つの文字が何らかの方法で出力に影響を与える必要があります。 カインの標準ルールは両方のプログラムに適用されます。特に、どちらの場合もエラーカインは許可されません。 回答形式の一貫性のために、次のようなものから回答を始めてください。 # <Language for A> & <Language for B>, Score: <B score> / <A score> = <combined score>

2
実存ゴルフ
数学には多くの記号があります。シンボルが多すぎると言う人もいるかもしれません。それでは、写真でいくつかの数学をしましょう。 紙を用意しましょう。これを参考にします。紙が空の状態で開始するには、それがまたはtrueと同等であると言います。⊤⊤\top本当true\textit{true} 紙に他のことを書くと、それも真実です。 例えば クレームおよびQが真であることを示します。PPPQQQ ここで、ステートメントの周りに円を描くと、そのステートメントは偽であると言えます。これは論理的な否定を表します。 例えば: が偽で、Qが真であることを示します。PPPQQQ 複数のサブステートメントの周りに円を配置することもできます。 円の内側の部分は円を囲むことで通常として読むので、それは意味しません (P と Q )。サークルをネストすることもできますP と QP and QP\text{ and }Qない (P および Q )not (P and Q)\text{not }(P\text{ and }Q) not ((not P) および Q )not ((not P) and Q)\text{not }((\text{not }P)\text{ and }Q) ⊥⊥\bot偽false\textit{false} 空のスペースが真であったため、真の否定は偽です。 この単純な視覚的方法を使用して、命題論理のステートメントを実際に表現できます。 証明 ステートメントを表現できるようになった後の次のステップは、ステートメントを証明できるようにすることです。証明には、グラフの変換に使用できる4つの異なるルールがあります。私たちは常に空のシートから始めます。これは私たちが知っているように空虚な真実であり、次にこれらの異なるルールを使用して空のシートを定理に変換します。 最初の推論ルールはInsertionです。 …
22 math  logic  proof-golf 

12
本当にカナダの日でしたか?
7月1日はカナダの日(イェーカナダ)です!またはそれは?と思われるWikipediaのこの日のためのページでは、カナダ関連コンテンツをたくさん持っているが、より多くのカナダ人である別の日はありますか? あなたの仕事は、入力として日付(月と日)を取り、入力された日付のWikipediaページで「カナダ」の言及の数を返すまたは出力するプログラムまたは関数を書くことです。いくつかのルール: 日付は任意の合理的な形式で入力できます あなたの提出はurlからデータを引き出す必要がありますen.wikipedia.org/wiki/Month_Day。 のみ"Canada"を検索し付属のサブストリングをカウントする必要があり、タイトルのみの場合には。"Canadian"カウントしませんが、カウント"Canada's"します。大文字と小文字を区別する正確なテキスト"Canada"が文字列内に存在する限り、一致します ページのコンテンツは、対応する.htmlファイル内のすべてと見なされます(つまり、ページとしてaをダウンロード.htmlしてメモ帳で開くと表示されます) 結果はSTDOUTに出力されるか、返されるか、他の合理的な方法で表示されます。 テストケース: July 1 => 34 May 14 => 1 Oct 31 => 2 July 4 => 2 これはコードゴルフであるため、最短の提出が勝ちます (報われないボーナスとして、カウントが最も高い日が何であるかを知りたいです)

8
レトロなディスプレイを読む
盗まれたアート数字のサイズは? 7セグメントの数字は、文字を使用してASCIIで表すことができます_|。数字は0-9次のとおりです。 _ _ _ _ _ _ _ _ | | | _| _| |_| |_ |_ | |_| |_| |_| | |_ _| | _| |_| | |_| _| あなたの仕事は、アートを通常の数値に解析することです。 数字に関する注意 各桁の幅は異なります。 1 幅が 1 3そして、7ある2広いです 245689そして0、すべて3広いです また、各桁の間には1文字のパディングがあります。完全な文字セットは次のとおりです。 // <-1つのスペースである必要がありますが、SEの書式設定は台無しにします | | ------------- _ _ | | _ …

2
血統を計算する
少し遺伝学のレッスン 誰かの目に見える形質や表現型にしかアクセスできない場合、実際の遺伝情報や各家族の遺伝子型を把握するために、しばしば家族歴の血統が使用されます。 単純な支配を扱う場合、単純な家系図チャートは、各人の対立遺伝子、またはそれらが持っている遺伝子のバージョンを把握するのに十分です。単純な支配では、支配的な対立遺伝子(大文字で表される)を持つ人は、他の対立遺伝子に関係なく、常にそのバージョンが表す特性を持ちます。そのバージョンを表現するには、2つの劣性対立遺伝子(小文字で表記)が必要です。言い換えれば、優性対立遺伝子は常にその遺伝子の劣性バージョンをマスクします。血統図の例を次に示します。 ここの各行は世代です。円は女性、男性は正方形、水平線は結婚、垂直線は子供です。ものすごく単純。黒は劣性表現型、白、優性を意味します。上から始めて(対立遺伝子がAおよびであると仮定してa)、人2がaaホモ接合劣性であることがわかります。これは劣性表現型の唯一の可能なオプションだからです。現在、人は劣性の子供を持っているため、どちらかAaまたはAA優勢な表現型である可能性がありますがAa、彼は、またはヘテロ接合でなければなりません。他のすべての人に対してこれを行うことができます。2番目の対立遺伝子を把握するための情報がない場合は、次のようにしますA_。 あなたのタスク [GenI, GenII, etc.]健全な形式のような世代リストの形式で家系図を受け取ります。 各世代は文字列のリストになり、各文字列は人を表します。 人々は、ID、表現型、および「つながり」という3つの部分で構成されています。 IDは、Aまたは以外のツリー全体で一意の単一の印刷可能なASCII文字ですa。(いいえ、チャートに95人以上はいません)。 それらの表現型は、AまたはのいずれかaでAあり、優性対立遺伝子でありa、劣性である。 それらの接続は、接続している他の人のIDのシーケンスです。 同じ世代のつながりは結婚であり、異なる世代の子どもと親です。 接続は両側で繰り返されます(つまり、夫は彼が妻の夫であると言い、妻は彼女が妻の夫であると言います)。 できる限り全員の遺伝子型を把握する必要があります。 人の代わりに同じリストを返し、遺伝子型を同じ位置に置きます。 遺伝子型はのAa代わりに順番に出力する必要がありaAます。 入力形式については少し余裕があります。 これはコードゴルフなので、バイト単位の最短回答が勝ちです。 例 [["0A1234", "1a0234"], ["2A01", "3a01", "4A015678", "5a4678"], ["6a45", "7A45","8A45"]] (The one above) -> [["Aa", "aa"], ["Aa", "aa", "Aa", "aa"], ["aa", "Aa", "Aa"]] [["0A12", "1A02"], ["2A301", "3a2"]] -> [["A_", "A_"], ["A_", …

2
死ぬための準備?
バックグラウンド 卓上ロールプレイングゲームでのennuiのソースの1つは、多くのサイコロを含むロールを扱うことです。崩壊呪文を唱えることは瞬間的かもしれませんが、40個のサイコロを振って合計することは確かではありません! これを処理するためのいくつかの提案は、rpg.stackexchange.comで説明されています。ただし、ローラープログラムの使用やサイコロの平均化など、ゲームの楽しさやコントロールの感覚を失わせるものもあります。4個のサイコロを転がして合計に10を掛けるなど、その他の場合は結果がはるかに揺れます(サイコロの平均は反対方向に作用します)。 この質問は、平均結果(平均)またはそのスイング(分散)を変更せずに、サイコロの数を減らす方法に関するものです。 表記法と数学 この質問では、次の表記を使用してサイコロを振ります。 n d k(40d6など)は、k面のダイスのnロールの合計を指します。 n d k * c(4d6 * 10など)は、結果に定数cを乗算することを表します。 ロール(4d6 * 10 + 40d6など)と定数(4d6 + 10など)を追加することもできます。 単一のダイスロールの場合、次のことを示すことができます。 平均:E [1d k ] =(k + 1)/ 2 分散:Var(1d k)=(k-1)(k + 1)/ 12 平均と分散の基本的な特性を使用して、さらに次のことを推測できます。 平均:E [ m d k * a + n d l * …

4
単語の音節を数える方法
入力:単一の英語の単語を含む文字列が渡されます。すべての文字は小文字になり、文字列にはアルファベット以外の文字は含まれません。 出力:単語に含まれる音節の数を表す1〜7の整数を返します。 スコアリング:プログラムは、このリポジトリで見つかったすべての単語に対して実行されます。あなたが取得する場合Nの言葉は修正して、あなたのプログラムがあるM大規模なバイト、その後、あなたのスコアがありますN-(M*10)。最大のスコアが勝ちます。 音節カウントを生成するために、これを単語リストとして使用し、これを音節のカウントに使用しました。

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