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

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

30
Magic 8 Ballを作成する
子供の頃、私の友人はマジック8ボールを持っていて、質問をして、その質問の運命を確認しました。 チャレンジ あなたの課題は、実行(または呼び出し)時に、以下の可能な回答からランダムな回答を出力(または返す)するプログラム(または関数)を作成することです。(ランダムであること。each output should have a nonzero chance of occurring but they do not need to meet any other criteria) マジック8ボールからの可能な回答は(大文字と小文字を区別しません): It is certain It is decidedly so Without a doubt Yes definitely You may rely on it As I see it, yes Most likely Outlook good Yep Signs …

30
コードゴルフ:あなた自身のペットASCIIヘビ
それで、私は自分でコンソールに蛇を印刷するワンライナーを書きました。ちょっと面白くて、どうすればコードを圧縮できるのだろうと思いました... 以下に(短い)出力例を示します。 + + + + + + + + + + + + + + + + + + + + 仕様は次のとおりです。 各行では、単一の非空白文字(好きな方)がコンソールに出力されます。最初は、その左側に29〜31個のスペースが埋め込まれます。 各反復で、これら3つのアクション間でランダムな決定が行われます パディングの量は1ずつ減少します パディングの量は同じままです パディングの量は1ずつ増加します これを30回実行して、30セグメント長の蛇をコンソールに出力します。 バイト単位の最短回答が優先されます。

22
文字列を爆発させる
任意の文字列を指定して、テキストが各対角線に沿って上下に移動する三角形の形式で印刷します。たとえば、の入力は次"Hello World"を出力する必要があります。 d l r d o l W r d o l o W r d l o l l o W r d e l o l H l o W r d e l o l l o W r d l o l o W r …

18
26人の歌手、26通の手紙
RollingStoneによると、以下は史上最高の26人の歌手です。 Aretha Franklin Al Green Ray Charles Robert Plant Elvis Presley Mick Jagger Sam Cooke Tina Turner John Lennon Freddie Mercury Marvin Gaye Bob Marley Bob Dylan Smokey Robinson Otis Redding Johnny Cash Stevie Wonder Etta James James Brown David Bowie Paul McCartney Van Morrison Little Richard Michael Jackson Roy …

17
蛇を巻いてくれ!
入力整数与えられn、ある数の蛇を描画測定グリッドn x n番号からなる1を通じてn^2以下の様式で互いに巻回されています。 入力n = 3: 7 8 9 6 1 2 5 4 3 入力n = 4: 7 8 9 10 6 1 2 11 5 4 3 12 16 15 14 13 入力n = 5: 21 22 23 24 25 20 7 8 9 10 19 6 1 …
34 code-golf 

30
整数行列の決定要因
入力として正方整数行列を指定し、行列の行列式を出力します。 ルール マトリックス内のすべての要素、マトリックスの行列式、およびマトリックス内の要素の総数は、言語の表現可能な整数の範囲内にあると想定できます。 0の小数部を持つ10進数/浮動小数点値の出力が許可されます(例:の42.0代わりに42)。 ビルトインは許可されますが、ビルトインを使用しないソリューションを含めることをお勧めします。 テストケース [[42]] -> 42 [[2, 3], [1, 4]] -> 5 [[1, 2, 3], [4, 5, 6], [7, 8, 9]] -> 0 [[13, 17, 24], [19, 1, 3], [-5, 4, 0]] -> 1533 [[372, -152, 244], [-97, -191, 185], [-53, -397, -126]] -> 46548380 [[100, -200, …

30
番号の範囲を元に戻す
それが非常に簡単です、数与えられn、範囲を作成0しますn-1。実際、多くの言語がこの操作を組み込みとして提供しています。 次のCJamプログラムは整数を読み取り、そのような範囲を出力します(オンラインで試してみてください!): ri, セパレータなしで数値が出力されることに注意してください。 チャレンジ あなたの仕事は、このプロセスを逆にすることです。範囲を表す文字列を指定すると、その範囲を生成するために使用される数値を返すプログラムを作成する必要があります。 仕様書 番号は区切り文字なしで指定されます。 文字列が有効な範囲を形成すると仮定できます。 範囲に0または1ベースのインデックスを使用できます。 正しい出力が32,767を超えることはないと想定できます(したがって、有効な入力の長さが152,725を超えることはありません)。 正しい出力は常に正であると仮定することができます(したがって、0または負を処理する必要はありません)。 これはcode-golfであるため、最短の競合する回答(バイト単位)が勝ちます。 テストケース 0インデックス付き: 0123 -> 4 0 -> 1 0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 -> 101 1インデックス付き: 1234 -> 4 1 -> 1 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 -> 100

30
逆配列合計
プログラムは、入力として配列を取る必要があります。 配列: 常に1次元になります 整数のみが含まれます 空にすることができます プログラムは配列を逆にしてから、元の要素に要素を追加する必要があります。例: 入力: [1, 2, 3] 元の: [1, 2, 3] 逆に: [3, 2, 1] [1, 2, 3] + + + [3, 2, 1] [1+3, 2+2, 3+1] 出力: [4, 4, 4] テストケース: #In #Out [8, 92], [100, 100] [1, 2, 3], [4, 4, 4] [5, 24, 85, …

22
街を作って
コーダーは常に配列を退屈な1次元エンティティにフラット化しようとしているので、悲しくなります。 あなたの仕事は、任意の文字列を展開して、素敵な街の空の景色を出力することです。 文字列を考えてみましょう: aaabbbbbccqrrssstttttttPPw 次のようになります。 tt tt bb tt bb tt aabb sstt aabbcc rrssttPP aabbccqqrrssttPPww (はい、はい、文字は都市のスカイラインのように見えるように複製されています)。 入力文字列を取得し、一致する文字(必ずしもアルファベット文字である必要はありません)の各サブセクションを複製し、都市を構築します! 最短のコードバイトが優先されます。 私は実際に要件が決まっていると思っていましたが、いくつかの質問に答えるために: それは地面になければなりません 必要に応じて余分な空を空けることができます(先頭の空白行、周囲の空白スペース)-ただし、建物の間ではありません 文字列内で文字を再利用できます(同じアーキテクチャ、異なる場所) 文字はASCIIであると想定されますが、追加のエンコード(UTF8など)をサポートする文字にはより多くの才能が与えられます

30
同じ数字を逆にして、1からnまでの数字をインターリーブします
簡単なもの: 正の整数を取るN 1000未満、及び出力から整数1のnがから整数でインターリーブNに1。数字を連結して、区切り記号なしで数字が表示されるようにする必要があります。 テストケース: n = 1 11 n = 4 14233241 n = 26 12622532442352262172081991810171116121513141413151216111710189198207216225234243252261 n = 100 110029939849759669579489399210911190128913881487158616851784188319822081218022792378247725762675277428732972307131703269336834673566366537643863396240614160425943584457455646554754485349525051515052495348544755465645574458435942604161406239633864376536663567346833693270317130722973287427752676257724782379228021812082198318841785168615871488138912901191109299389479569659749839921001 これはコードゴルフであるため、各言語のバイト単位の最短の提出が勝ちです。説明が奨励されます。

16
XKCDパスワードジェネレーター
前書き どうやら、この質問はここで尋ねられており、残念ながら終了しました。もう一度試してみるのは良い考えだと思いましたが、正しくやっていました。 XKCDは、「覚えにくいパスワード」を使用するように訓練されている方法を見て、安全だと思いますが、代わりにコンピューターをクラックするのに3日かかります。反対に、4〜5語を覚えると、Kuanのパスワードイントロピーが高まり、覚えやすくなります。クレイジーだよね? チャレンジ 今日の仕事は、単語を使用して5つのパスワードを作成することです。パスワードごとに4単語、単語ごとに最低4文字、ただし最大値はありません。Kuanのパスワードイントロピーは、すべてのパスワードについて計算する必要がありますが、強制的な最小値は設定されません。 Kuanのパスワードイントロピーとは何ですか? Kuanによると、Kuanのパスワードイントロピーは、パスワードがどれほど予測不能であるかの尺度です。単純な計算があります:Eは=ログ2(R)* Lを。EはKuanのパスワードイントロピー、Rは使用可能な文字の範囲、Lはパスワードの長さです。 利用可能な文字の範囲は自明です。パスワードに使用できる文字の範囲です。この場合、大文字と小文字です。アルファベットには26文字あるため、パスワードの全範囲で26 x 2 = 52文字です。 パスワードの長さも自明です。作成後のパスワードの合計の長さです。 制約 入力なし。 同じパスワードで単語を再表示することはできません。 パスワードには記号や数字を使用できません。 パスワードごとに4ワード、ただしワードごとに最低4文字。 単語間にスペースはありません。 同じパスワードを何度も生成することはできません。 各単語はパスワードで大文字にする必要があります。 出力は人間が読めるものでなければならず、間隔をあける必要があります。上記のKuanのパスワードイントロピー式を使用して、パスワードのKuanのパスワードイントロピーも含める必要があります。 辞書。これを使用し、テキストファイルとしてダウンロードし、それに応じて統合する必要があります。これは、単語を取得するリストになります。コードは利用可能であると想定する必要があります。 これはcode-golfで、最短バイトが勝ちます。 出力 TriedScarProgressPopulation 153.9 TryingPastOnesPutting 119.7 YearnGasesDeerGiven 108.3 DoubtFeetSomebodyCreature 142.5 LiquidSureDreamCatch 114.0
34 code-golf  math 

30
文字列に数字を掛けます!
少し前に、文字列の乗算に関する課題がありました。数値だけでなく文字列も乗算できる方法を示しました。ただし、数字に文字列を適切に掛けることはできません。そうする試みが1つありましたが、これは明らかに間違っています。修正する必要があります! あなたのタスク: 文字列と整数の2つの入力を乗算する関数またはプログラムを作成します。文字列に整数を(適切に)乗算するには、文字列を文字に分割し、各文字を整数に等しい回数繰り返してから、文字を元に戻します。整数が負の場合、最初のステップでその絶対値を使用し、文字列を逆にします。入力が0の場合、何も出力しません(0を掛けたものは何も等しくありません)。 入力: 印刷可能なASCII文字と改行のみで構成される文字列、および整数(負の可能性あり)。 出力: 文字列に整数を掛けたもの。 例: Hello World!, 3 --> HHHeeellllllooo WWWooorrrlllddd!!! foo, 12 --> ffffffffffffoooooooooooooooooooooooo String, -3 --> gggnnniiirrrtttSSS This is a fun challenge, 0 --> Hello World!, 2 --> HHeelllloo WWoorrlldd!! 得点: これはcode-golfであり、最低バイト数が勝ちです!

6
ラムダでの割り当てのためのPythonの回避策
これはPythonでのゴルフのヒントの質問です。 Pythonゴルフでは、提出がラムダとして定義された関数であることが一般的です。例えば、 f=lambda x:0**x or x*f(x-1) x の階乗を計算します。 ラムダ形式には2つの大きな利点があります。 f=lambda x:...またはのボイラープレートはlambda x:...、def f(x):...return...またはx=input()...print... 再帰呼び出しを使用すると、ほとんどバイトのオーバーヘッドなしでループできます。 ただし、ラムダには、単一の式のみを許可し、ステートメントを許可しないという大きな欠点があります。特に、これはのような割り当てがないことを意味しc=chr(x+65)ます。値を2回(またはそれ以上)参照する必要がある長い式がある場合、これは問題になります。 のような割り当てE=enumerateは、関数の外部またはオプションの引数として可能ですが、関数の入力に依存しない場合のみです。定義時に評価されるときにf=lambda n,k=min(n,0):...入力nが定義されていないため、fail などのオプションの引数k。 その結果、代替が長い非ラムダであるために、ラムダで長い式を繰り返して吸い込むことがあります。 lambda s:s.strip()+s.strip()[::-1] def f(s):t=s.strip();print t+t[::-1] 損益分岐点は約11文字(詳細)で、これを超えるとdefまたはに切り替わりますprogram。これを繰り返し式の長さ5の通常の損益分岐点と比較します。 range(a)+range(b) r=range;r(a)+r(b) print s[1:],s[1:]*2 r=s[1:];print r,r*2 他の言語には、Octaveなどの回避策があります。Pythonには既知のトリックがありますが、それらは長く、不格好で、使用が制限されています。ラムダでの割り当てをシミュレートするための短く汎用的な方法は、Pythonゴルフに革命をもたらします。 Pythonゴルファーがこの制限を克服または回避する方法は何ですか?ラムダで長い表現が2回繰り返されるのを見るとき、彼らはどんな潜在的なアイデアを念頭に置くべきですか このヒントの質問の私の目標は、この問題を深く掘り下げることです。 ゴルフの回避策をカタログ化して分析し、ラムダ内の偽の割り当て より良い方法のための新しいリードを探る 各回答では、回避策または潜在的なリードを説明する必要があります。
34 code-golf  tips  python 

8
ASCIIアートテキストを読む
Golf meからインスパイアされたASCIIアルファベットで、このチャレンジは(ほぼ)直接の逆です。 仕事: ASCIIアートテキストの文字列を取得し、テキストの内容を通常のASCIIテキストとして出力します。 入力: ASCIIアートテキストの文字列。 入力には、ASCII文字#、スペース、および4つまたは5つの改行のインスタンスのみが含まれます(末尾の改行はオプションです)。すべての行の長さは同じです。(つまり、最後のASCIIアート文字の末尾にスペースが埋め込まれます。)#必要に応じて、入力ではなく他の印刷可能なASCII文字を使用できます。 入力には、ASCIIアート文字A-ZとASCIIアートスペース(空白の5x5ブロック)が含まれます。句読点はありません。ASCIIアートテキストは1行のみです(実際の5行)。末尾または先頭のASCIIアートスペースはなく、隣接するASCIIアートスペースもありません。 文字サイズは5x5文字です。各文字の間には1x5のスペースがあります。単語間のスペースは、5x5の空白ブロックです(もう1つの文字であるため、両側に1x5のスペースがあります)。ASCIIアート文字の間にのみ、末尾または先頭に1x5のスペースはありません。 出力: ASCII文字A-Z+スペースとしてテキストを含む文字列。あなたのソリューションにとって何らかの形で簡単であれば、出力も小文字にすることができます。大文字と小文字を混在させることもできます。 ASCIIアート文字: ### #### ### #### ##### ##### ### # # ##### ##### # # # # # # # # # # # # # # # # # # # # # # # ## ## ##### #### …

10
前任者が完成したアスキーキューブ
前任者が完成した最初のアスキーキューブ(PAC 1)は、辺の長さが1の単純なキューブで、次のようになります。 /////\ ///// \ \\\\\ / \\\\\/ PAC 2は、その前身(とそれを組み合わせるような幾何学的形状である PAC 1する)側の長さ2の立方体を完了します: front back /////////\ /////////\ ///////// \ ///////// \ /////\\\\\ \ ///////// \ ///// \\\\\ \ ///////// \ \\\\\ ///// / \\\\\\\\\ / \\\\\///// / \\\\\\\\\ / \\\\\\\\\ / \\\\\\\\\ / \\\\\\\\\/ \\\\\\\\\/ ので、バック -viewは一種退屈であり、我々は唯一に興味のあるフロント -view。 同じことがPAC 3にも当てはまります。いくつかの視覚的思考により、PAC 2を向きを変えてPAC …

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