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

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

5
入力として公正なコインを与え、特定の不公平な結果を生成します
不公平なコインを使用して公正なコインを生成するのは簡単ですが、その逆を達成するのはより困難です。 プログラムは、入力として1 つの数値X(0〜1を含む)を受け取ります。入力は、ソースコードの途中の数字として単純にハードコードされてはなりません。次に、1桁を返す必要があります。1確率がXの0場合、それ以外の場合は。 プログラムは、ソースコードで1つの形式の乱数ジェネレーターint(rand(2))(または同等のもの)のみを使用できます。これは、等しい確率でゼロまたは1を返します。この関数は、コードに何度でも含めたり、アクセスしたりできます。また、コードの一部として自分で関数を提供する必要があります。 プログラムでは、乱数生成関数として機能する可能性のある他の乱数生成関数または外部ソース(時刻関数や日付関数など)を使用できません。また、外部ファイルにアクセスしたり、外部プログラムにジョブを渡すこともできません。 これはコードゴルフで、最短の回答が勝ちです。
13 code-golf  math 

7
すべての可能な点字を書きます
今朝、面白いパズルがエレベーターのボタンを見て私に来ました。 2x3グリッドに収まるすべての点字パターンのリストを生成する必要があります。ハッシュ#を使用してバンプ-を示し、ハイフンを使用して平坦な領域を示します。 予想される出力サンプル: #- -- -- ## -- -- #- #- -- (and so on...) ルール: プログラムでは、各パターンを少なくとも1つの文字または行で区切る必要があります。 パターンは任意の順序で生成できます。 点字のアルファベットが実際に使用するものに関係なく、すべてのパターンを作成する必要があります。完全に空白のパターンはオプションです。 一意のバンプパターンのみを生成する必要があります。以下のパターンは、バンプが同一の配置にあるため、同等と見なされます。これらの場合、左上隅に最も近いパターン(つまり、この例の最初のオプション)を使用します。 #- -# -- -- #- -# #- -# -- -- #- -# あなたはそれがすべてのために動作させることができればボーナスポイントのxでyの大きさのグリッド。(編集:妥当な範囲内。概念実証には4x4までで十分です。) ウィキの記事を読むと、このパズルのルールを満たす45のパターン(空白を含む)があるようです。

15
テキストの長方形
プログラムは、入力として少なくとも8文字のテキストを取得し、常に偶数の文字で構成されます。(入力の正確さを評価する必要はありません)。 あなたの目標は、そのテキストを長方形として表示することです。たとえばHelloWorld、入力として与えられ、ディスプレイ Hell d o lroW ルール: テキストは時計回りに回ります(好きなように開始位置) これは、1文字幅の閉じた長方形を形成します。 長方形は内側のほとんどの領域を囲む必要があります。(テキストを2行で表示するという些細な答えを除外するため) テキスト自体と必要なパディングスペースと改行以外の文字は印刷されません。 コードゴルフとして、最短のコードが勝ちます。 勝者は、最初の有効な回答から10日以内に選択されます。
13 code-golf 

10
PrettyFontで数値を出力します
PrettyFontという新しいフォントを設計しました。私はそれを完成させることに多くの時間を費やしましたが、私は働く人なので、それを終わらせる時間がありません。したがって、現在は4文字しか含まれていません。私が金持ちになったある日、それはそれを終えることが私の生涯の目標になりますが、今のところ... これはPrettyFontです:(0、1、2、3) #### ## #### #### # # # # # # # # # # ### # # # # # #### ### #### #### 各文字は幅4ピクセル、高さ5ピクセルです。今!PrettyFontで数値を出力するプログラムを作成して、印刷用のデザインを送信できるようにします。 ルール: 入力は、基数4の文字列番号(文字0〜3のみ)、たとえば「01321」です。プログラムは、文字列内の少なくとも10文字を処理できる必要があります。ボーナスポイントは、文字列の代わりに実際の基数10の整数を取るプログラムに与えられます。編集の明確化:整数ボーナスは、54321のような任意の10進数を入力できることを意味し、プログラムはそれを4進数に変換して出力します(この場合は31100301)。 出力は、PrettyFontで印刷された番号になります。入力と出力の例: > "321" #### # ### # #### #### # # # # #### ## # # # ### 次のような単一行形式で出力できるプログラムへの大きなボーナス: > …

9
予約語を使用せずに最初の128個の素数を出力します
明らかな解決策は、単に文字列として印刷することですが、より短いコードを書くことは可能ですか? 要件: 入力は処理されず、出力は2 3 5 7 11 13 ...etcなどの形式である必要があります。 その言語の予約語はまったく使用されていません この言語は、少なくとも構造化プログラミングを許可し、予約語を使用する必要があります(そうでない場合、ポイント2は意味がありません)。 最初はC / C ++のみを念頭に置いていましたが、不正行為を防止しようとしながら質問を拡張しました

8
平方根の連続分数の決定
連分数数はn、次の形式の割合である に収束しますn。 連続aした分数のシーケンスは、通常次のように記述されます。[a 0 ; a 1、a 2、a 3、... a n ]。 同じように書きますが、セミコロンの間に部分を繰り返します。 あなたの目標は、の平方根の継続部分を返すことですn。 入力:整数n。n完全な正方形になることはありません。 出力:の継続分数sqrt(n)。 テストケース: 2 -> [1; 2;] 3 -> [1; 1, 2;] 19 -> [4; 2, 1, 3, 1, 2, 8;] 最短のコードが優先されます。幸運を!
13 code-golf  math  number 

10
歌のコーディング-選択したプログラミング言語で音楽の歌詞を表現する[非公開]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックコードゴルフスタックExchange用。 5年前に閉鎖されました。 読んだときに曲の歌詞となる、選択した言語でプログラムを作成します。これは、必要があり、エラーなしでコンパイルして実行することができ、有効なプログラムであること。画面にすべての歌詞を技術的に印刷することもできますが、スタイルを使用し、可能な限り文字列リテラルを避けることをお勧めします。 これ自体は難しいことを考えると、歌詞で読みやすくなることを考慮しない定型コードの1つのセクションを書くことができます。ただし、コードのブロックが始まると、それは歌の歌詞として読み取る必要があり、歌が終了するまで中断することはできません。コメントを使用して、ソングコードの開始と終了を示すことができます。コードを読むように歌詞自体も指定してください。書かれたものから遠く離れない限り、あなたはあなたの解釈に「リベラル」であることができます、さもなければそれはあなたにポイントを要します。 部分的な歌の歌詞は許可されますが、歌全体に言葉を付けると二重のポイントが得られます。審査は3つのカテゴリに分けられます。 10ポイント-独創性 10ポイント-歌の難易度 20ポイント-コードでのその歌の表現。 提出ごとに、以下のコメントでスコアをお伝えします。回答を編集する場合は、コメントインジケータを教えてください。それに応じて再評価します。ただし、公平にするために、各再評価では合計スコアから2ポイントが差し引かれます。 例は次のとおりです。 public class Song { public String play() { // Song begin try { if(this instanceof TheRealLife || this instanceof JustFantasy) { throw new InALandSlide(); } } catch (InALandSlide e) { } return "No \"FromReality\""; // Song end } …

6
すべての有理数のリストを出力します
数学のすべてのうち、常識を超えるいくつかの定理が常にあります。これらの1つは、さまざまなサイズの無限大があるという事実です。別の興味深い事実は、サイズが異なると思われる多くの無限大が実際には同じサイズであるという考えです。有理数と同様に、整数と同数の偶数があります。 この質問の一般的な概念は、無限という奇妙な現実に立ち向かうことです。このチャレンジでは、プログラムは以下を行うリストを出力します。 特定の時点で、常に整数のエントリがあります 最終的に、リスト全体に特定の(ゼロ以外の)有理数を正確に1回(十分に長く実行するために残した場合) 制限のない数の空のスロットが含まれている(リスト上のエントリが不必要に0に設定されている) 空きスロットの割合が100%の制限に近づいている すべての正の整数Nに対して、N個の連続した空のスロットを持つ無限の場所があります チャレンジ あなたの課題は、次のルールを備えた特別なリストを出力する、可能な限り短いプログラムを書くことです。 インデックスが平方数ではないすべてのエントリはゼロに設定する必要があります。したがって、最初のエントリはゼロ以外、2番目と3番目はゼロ、4番目はゼロ以外などになります。 すべての有理数は、単純化された不適切な分数の形式(4/5や144/13など)になります。例外はゼロです0。これは単にです。 プログラムが十分に長く、十分なメモリで実行される場合、最終的にすべての(正および負の)有理数がリストに表示されます。特定の有理数の場合、必要な時間は任意の長さですが、常に有限の時間です。 無限の時間実行した場合、ゼロ以外の有理数が2回現れることはありません。 ルール3では、さまざまな法的出力が無限に存在するため、ある程度のバリエーションが認められています。 出力は行のストリームになります。各行5: 2/3は、最初の番号がエントリ番号であり、その後に有理数が続く一般的な形式になります。1: 0常に出力の最初の行になることに注意してください。 出力のスニペットの例: 1: 1/1 2: 0 3: 0 4: 2/1 5: 0 6: 0 7: 0 8: 0 9: -2/1 10: 0 etc... 規則、規制、および注記 これはコードゴルフです。標準コードのゴルフ規則が適用されます。また、出力で許可されるバリエーションのため、少なくともリストにすべての可能な有理数が1回だけ含まれていると信じる理由と、解が正しいことを示す必要があります。 編集:素数は挑戦から気をそらしたので、私はそれを二乗数に変更しています。これは同じ目的を達成し、ソリューションを短縮します。

4
忙しい脳ビーバー
できるだけ多くのステップを実行しますが、無限ループしない256文字以下のBrainfuckプログラムを作成します。プログラムは入力を受け付けません。 すなわち: 右側に無数のセルがあると仮定します。 A <左端のセルに何もしません。 A -セル値がゼロセットセルです255。 命令は+-<>.すべて、実行時に1つのステップとしてカウントされます。 とき[かが]検出され、それが一歩としてカウントされます。ただし、条件が真であり、制御フローがジャンプする場合、対応する]または再びステップとしてカウントされ[ません。 最も多くのステップを踏むソリューションが勝ちです。 ソリューションにある種のパターンがある場合、同様の長さのプログラムnがとるステップ数の関数を与えることは歓迎されますが、必須ではありません。 指示を数えるために、この修正されたインタープリターを使用できます: 例: ++[-] 検出された命令は++[-]-]であり、プログラムは7ステップ実行されました。

7
2つの文字列間の最小編集距離を見つける
説明 2つの文字列間の編集距離は、1つの単語を別の単語に変換するための挿入、削除、または置換の可能な最小数の関数です。 挿入と削除のコストは1、置換のコストは2です。 例えば、間の距離ABとは、A削除が1のコストと必要なだけ編集の欠失であるため、1 B文字。 間の距離CARとは、FAR置換がこれを見にもう一つの方法は、1つの欠失および1回の挿入である2を要しているため、2です。 ルール 2つの入力文字列(指定された言語では便利ですが)を指定すると、プログラムは2つの文字列間の最小編集距離を見つける必要があります。 文字列には文字のみが含まれ、A-Z100文字未満で0文字を超えると仮定できます。 これはコードゴルフであるため、最短のソリューションが優先されます。 サンプルテストケース ISLANDER, SLANDER > 1 MART, KARMA > 5 KITTEN, SITTING > 5 INTENTION, EXECUTION > 8
13 code-golf  string 

2
鏡の部屋を照らす
ゴール このコンペティションでは、キャンドルが1本入ったランダムな部屋が与えられます。目標は、暗いスポットをに置き換えて、部屋のどの部分をキャンドルで照らすかを決定する最短のプログラム(これはゴルフです)を書くこと@です。プログラムは、STDINからのスペースを確保し、出力をSTDOUTに出力する必要があります。 入力/部屋の例 +------+ | C | | +--+ | \ | +---------+ ろうそくはで表されC、壁/ミラーは、で表され|、-、/、または\。壁自体は鏡です。部屋のコーナーはで表されます+。 部屋には斜めの壁はありません。また、部屋の外に光が漏れることはありません。 また、行の最初のキャラクターは常に部屋の外の壁の一部になります。各行の絶対的な最後のキャラクターは、部屋の反対側の壁になります。これら2つの間にキャラクターが部屋の外にいることはありません。 光と反射 キャンドルは、8つの基本的な方向(N、S、E、W、NE、SE、SW、およびNW)に8つの(レーザーのような)光線を放射します。以下に説明するように、これらの光線はミラーで反射します。 Old Direction of Travel | Mirror | New Direction N S E W NE SE SW NW / E W N S -- -- -- -- N S E W NE SE …

12
ワンタイムパッドを実装する
バックグラウンド ワンタイムパッドが適切に使用されている場合、クラックすることは不可能であることが証明されている暗号化の形式です。 暗号化は、プレーンテキスト(A〜Zの文字のみで構成される)を取得し、同じ長さの(ランダムな文字のみの)ランダム文字列を生成することにより実行されます。この文字列はキーとして機能します。次に、平文の各文字は、キーの対応する文字とペアになります。暗号文は次のように計算されます。各ペアについて、両方の文字が数字に変換されます(A = 0、B = 1、... Z = 25)。2つの数値はモジュロ26で加算されます。この数値は文字に変換されます。 解読は正反対です。暗号文とキーの文字はペアになり、数字に変換されます。次に、キーは26を法とする暗号文から減算され、結果は文字AZに変換されます。 チャレンジ あなたの課題は、ワンタイムパッドの暗号化と復号化の両方が可能な最短のプログラムを作成することです。 (STDINへの)入力の最初の行には、単語「ENCRYPT」または単語「DECRYPT」があります。 単語が暗号化されている場合、次の行はプレーンテキストになります。プログラムは、2行を(STDOUTに)出力する必要があります。1行目はキー、2行目は暗号文です。 単語が復号化されると、プログラムはさらに2行の入力を取得します。最初の行がキーになり、2番目の行が暗号文になります。プログラムは、復号化された平文である1行を出力する必要があります。 平文、暗号文、およびキーは常に大文字のA〜Zで構成する必要があります。それらは常に単一行であり、空白は含まれません。 キーは常にランダムでなければなりません。実行間でその大部分を繰り返すことはできません。また、テキストにパターンを見つけることはできません。 2つの簡単な例: ENCRYPT HAPPYBIRTHDAY >ABKJAQLRJESMG >HBZYYRTICLVME DECRYPT ABKJAQLRJESMG HBZYYRTICLVME >HAPPYBIRTHDAY >あなたが出力としてそのシンボルを印刷する必要はありませんので、出力される行を表します。

4
単なるバガテル
チャレンジ 以下のようなバガテルボードを考えます。 | | | /\ / | | \ /| | \ \ /\ \ | | \ / \ | |\ / / \ | | \ / \ | | \ | | \ / \ /\ \ | |\ / / \ /| | / | …
13 code-golf 

17
スクロールマーキー
難読化されたHello Worldへのエントリに続いて、基になるコードを共有するのは楽しいかもしれないと思いました。しかし、なぜコードを表示するだけで、ゴルフもできます! チャレンジ ターミナル上で文字列を右から左にスクロールし、左側に収まるスクリプトを作成します。 入力 引数として文字列を取ります。 結果 スクロールマーキーをSTDOUTに出力します。最大幅は50文字です。0または1文字の表示で始まります。スクロール中に文字の間にスペースがあります。確定すると停止します(単語の文字間に余分なスペースはありません)。スクロールは遅いが、遅すぎない(反復ごとに1秒未満)。 例 argを使用してスクリプトを実行する 'Hello World' H 後 H e l l o W o 後 H e l l o W o r l d 後 Hell o W o r l d 最後に Hello World 実行例については、「Hello World」チャレンジのコードを試してください。最終的に私は私のものを投稿します。現在、Perlでは202文字です。競合他社がいくつかあるので、回答に私の投稿を掲載しました。 勝者 制限を絶対にしたくないので、少しあいまいにしておきました。私のオリジナルの精神に従う最短のスクリプトが勝ちます。 ノート このゲームは xterm環境をます。別の環境が有用であることが判明した場合、同様の環境のみが比較され、それぞれに対して個別の勝者が宣言される場合があります。 …

3
三角法で三角形を解く
高校からの古い三角法のメモを掘り起こす時間です!課題は、異なる三角形の未知の側面と角度を解決することです。そして、コードゴルフの慣習であるように、最小の作業コードが勝ちます。 これは些細な問題ではありません。Pythonでの私の参照実装は現在838 837文字までですが、ゴルフソリューションをはるかに小さくできると確信しています。 さらに、行き詰まっている場合は、ウィキペディアのこのセクションで説明します:三角形:側面と角度の計算。 入力 次の三角形は、このチャレンジで使用される側面と角度の名前を示しています。側面は小文字で、角度は大文字であることに注意してください。 入力は、スペース上で区切られた6つの値stdinとして、コマンドライン引数(または選択)として与えられます。6つの値は、側面a, b, cと角度に対応しますA, B, C。不明な側面は疑問符(?)で示されます。入力角度と出力角度はどちらもラジアン単位でなければなりません。入力値が正しいと仮定できます(何も検証する必要はありません)。また、入力三角形が非縮退であり、すべての辺と角度が非ゼロであると仮定することもできます。 次の入力例aは8、サイドbが、サイドが12、角度Aが0.5ラジアンであることを示しています。 8 12 ? 0.5 ? ? 出力 出力は、入力と同じ形式で与えられます-スペースで区切られた6つの数字stdout。唯一の例外は、入力三角形を解決でき"No solution"ない場合ですstdout。文字列を書き込む必要があります。2つの解決策が可能な場合、それらは両方とも改行で出力されます。 上記の入力の出力は次のとおりです。 8.0 12.0 16.0899264342 0.5 0.802561439714 1.83903121388 8.0 12.0 4.97205505116 0.5 2.33903121388 0.302561439714 出力の精度はそれほど高くなくてもかまいませんが、少なくとも小数点以下2桁が必要です。 ルール 入力はstdinコマンドライン引数から読み取られます 出力はに書き込まれます stdout 指定された入力で2つのソリューションが可能な場合、両方を出力します 情報が少なすぎて1つまたは2つの明確な解決策が得られない場合は、それを"No solution"事例と見なします 組み込みまたは既存のコードは使用できません(もちろん、trig関数を使用できますが、「solveTriangle」などは使用できません) 最短のコードが勝つ テストケース に 3 4 5 ? …

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