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

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

9
チャプターはいくつありますか?
聖書は、これまでに書かれた中で最も影響力のある本の1つであり、史上最高の販売本として一般的に引用されています。現在の形式にコンパイルされる前に、数百年にわたって約 40人の異なる著者によって書かれました。しかし、聖書の興味深い点は、聖書の分割方法です。それは2つの異なる遺言に分割され、それらは66の小さな本に分割され、それぞれがより小さな章に分割され、それぞれが個々の詩に分割されます。 各本の章の数を可能な限り短いコードでエンコードしようとするのは楽しい挑戦だと思いました。したがって、今日の課題では、本の1つを入力として受け取り、その本の章の数をThe King James Versionに従って出力するプログラムまたは関数を作成する必要があります。 STDIN / STDOUTまたはファイルの読み取り/書き込み、関数の引数/戻り値、ユーザーへのプロンプトなど、すべての合理的な形式でIOを使用できます。入力は常に聖書の66冊の本の1つであり、小文字のみです。これは、他の入力が与えられた場合、未定義の動作が許可されることを意味します。The King James Versionの聖書の章に関するWikipediaのページによると、可能な入力と出力は66のみであるため、すべてここに提供されています。 genesis 50 exodus 40 leviticus 27 numbers 36 deuteronomy 34 joshua 24 judges 21 ruth 4 1 samuel 31 2 samuel 24 1 kings 22 2 kings 25 1 chronicles 29 2 chronicles 36 ezra 10 nehemiah 13 …

29
N番目の要素を繰り返します
しばらくの間(正確には5日間)文字列の質問がありませんでしたので、1つに行きましょう。 文字列sと正の整数を指定するとn、のすべてのn要素を取得しs、それをn繰り返し、に戻しsます。 たとえば、n = 3およびの場合、s = "Hello, World!"3文字ごとにですHl r!。次に、各文字を繰り返してnを生成しHHHlll rrr!!!ます。次に、元の文字を繰り返しバージョンに置き換えて、最終製品を作成しますHHHellllo, Worrrld!!! あなたの言語で可能な限り短いコードでこのタスクを達成することです! ルール これはコードゴルフなので、バイト単位の最短コードが勝ちます nの長さより小さくs、0より大きいことが保証されています の最初の文字sは、nth番目の文字の取得元であり、常に繰り返されnます sのみ(コードポイントを、印刷可能なASCII文字からなるであろう0x20 (space)に0x7E (~)) テストケース s, n => output "Hello, World!", 3 => "HHHellllo, Worrrld!!!" "Code golf", 1 => "Code golf" "abcdefghijklm", 10 => "aaaaaaaaaabcdefghijkkkkkkkkkklm" "tesTing", 6 => "ttttttesTingggggg" "very very very long string for …
18 code-golf  string 

20
干し草の山で針を見つける(強盗)
これは警官と強盗の挑戦の一部です。警官の役のためにここに行ってください。 強盗の挑戦 警察官の答えは、Haystackプログラムから文字のサブセットを削除することで解読でき、Needle代わりにHaystack(同じ言語での有効な提出のまま)出力します。上記の制約によって有効である限り、意図した警官とまったく同じ解決策を見つける必要はありません。 これを管理する場合は、ソリューションに回答を投稿し、警官の回答にリンクし、警官の回答にコメントを残して自分にリンクします。 最も警官に答える強盗が勝ちます。ひびの入った警官の回答のサイズの合計によって関係が壊れます(より長い提出物をひっくり返す強盗に有利に)。 各警官の答えは1回しか解読できません。もちろん、自分の答えを解読することはできません。警官の答えがクラッキングされる前または後に無効であることが判明した場合、強盗のスコアにはカウントされません。 例 以下に、異なる言語での簡単な例をいくつか示します。 Ruby Haystack: puts 1>0?"Haystack":"Needle" Delete: XXXXXXXXXXXXXXX Needle: puts "Needle" Python 2 Haystack: print "kcatsyaHeldeeN"[-7::-1] Delete: XXXXXXXX XX Needle: print "eldeeN"[::-1] 削除された文字のサブセットは連続している必要はありません。

30
私はゴルフ場ですか?
定義と規則 golfyアレイは、各要素が整数の配列であり、より高いまたは等しいすべての前の要素の算術平均。あなたの仕事は、入力として与えられた正の整数の配列がゴルフかどうかを判断することです。 空のリストを処理する必要はありません。 デフォルトの抜け穴が適用されます。 標準入出力メソッドが適用されます。 任意の2つの異なる空でない値を選択できます。それらは一貫している必要があり、他のすべての決定問題ルールを遵守しなければなりません。これはcode-golfで、各言語の最短コードが勝ちます! テストケースと例 たとえば、次の配列: [1, 4, 3, 8, 6] 各項がその前の項の算術平均よりも高いため、ゴルフ配列です。段階的に解決しましょう: 数->前の要素->平均->ルールに従いますか? 1-> []-> 0.0-> 1≥0.0(True) 4-> [1]-> 1.0-> 4≥1.0(True) 3-> [1、4]-> 2.5-> 3≥2.5(True) 8-> [1、4、3]-> 2.(6)-> 8≥2.(6)(True) 6-> [1、4、3、8]-> 4.0-> 6≥4.0(True) すべての要素が条件を尊重するため、これはゴルフの配列です。このチャレンジのために、空のリスト([])の平均はであると仮定することに注意してください0。 その他のテストケース: 入力->出力 [3]-> True [2、12]-> True [1、4、3、8、6]-> True [1、2、3、4、5]-> True [6、6、6、6、6]-> True [3、2]-> False …

19
MaxMin除数ペア(DMDP)の違い
除数について話しましょう... (しばらく)完全な二乗を除外すると、すべての正の整数は、それらの約数の2の積として表現できます。簡単な例126:ここにすべての約数があります126 ご覧のとおり、すべての除数をペアにすることができます。除数ペアと呼ぶものは次のとおりです。 [1, 126], [2, 63], [3, 42], [6, 21], [7, 18], [9, 14] このチャレンジでは、このリストの最後のペア(写真の中央のペア)のみが必要です。 [9,14]このペアをMaxMin Divisor Pairと呼びます。MaxMin除数ペア の違い (DMDP)は、のもう[9,14]=5 1つの例であるペアの2つの要素の違いです544。除数は次のとおりです。 [1、2、4、8、16、17、32、34、68、136、272、544] そしてDMDP(544)= 15 なぜなら32-17=15 何についての完璧な四角?すべての完全な正方形にはDMDP = 0があります除数の 例64を 見てみましょう {1、2、4、8、16、32、64} あなたはこのケースで見ることができるようにMAXMIN除数ペアで[8,8]持っているDMDP=0 私たちは、ほとんど行われてい... チャレンジ 整数を考えるとn>0、出力未満か等しいどのように多くの整数 10000、以下DMDPを持っています n テストケース 入力->出力 1->100 (those are all the perfect squares) 5->492 13->1201 369->6175 …

18
逆算サイクル
これに触発されて リンクされたチャレンジでは、元の要素と入力配列の逆の要素に加算を適用するように求められます。この課題では、他の基本的な数学演算を導入することで、少し難しくします。 整数の配列が与えられた場合、を通過します+, *, -, //, %, ^。ここで、//は整数除算で、^指数です。配列の逆に適用します。または、言い換えると、上記の関数のいずれかを配列の各要素に適用します。2番目の引数は配列の逆で、適用される関数は上記のリストを循環します。これはまだわかりにくいかもしれませんので、例を見てみましょう。 Input: [1, 2, 3, 4, 5, 6, 7, 8, 9] Reverse: [9, 8, 7, 6, 5, 4, 3, 2, 1] [ 1, 2, 3, 4, 5, 6, 7, 8, 9] Operand: + * - / % ^ + * - [ 9, …

19
n列すべてに1〜L(n)の行列
チャレンジ: 入力として正の整数を含むリストLを取得します。 3 5 2 1 6 そして、n番目の列がベクトル1:L(n)を含む行列を作成します。ここで、短い行にはゼロが埋め込まれます。 テストケース: 3 5 2 1 6 ----------------- 1 1 1 1 1 2 2 2 0 2 3 3 0 0 3 0 4 0 0 4 0 5 0 0 5 0 0 0 0 6 1 - 1 1 2 …
18 code-golf  matrix 

28
範囲内のマトリックス
チャレンジ 以下のテストケースに示されているように、整数n>0出力n+1 X n+1から1までのすべての整数を含む行列2n テストケース n=1 1 2 2 2 n=2 1 2 4 2 3 4 4 4 4 n=5 1 2 3 4 5 10 2 3 4 5 6 10 3 4 5 6 7 10 4 5 6 7 8 10 5 6 7 8 9 …

1
鏡の部屋
(この課題は非常に似ていますが、この現在の課題には追加の複雑さがあります。) 壁が平面鏡でメッキされている2次元の部屋を想像してください。 突然、一片の壁が欠けている部屋に光線が当たります!光ビームは部屋の周りを踊り、壁の鏡に反射され、最終的に再び部屋を出ます。 ロジック W、H、X、Y、Zの 5つの変数が与えられます。 さて、彼らはどういう意味ですか? W、Hは部屋のサイズ(壁を含む)で、Wは幅、Hは高さです。 X、Yは、壁に穴がある座標です。これは常に壁タイルに配置されていると想定できます。座標は0から始まり、X軸は右を指し、Y軸は下を指します。 Zは、光が部屋に入ること方向を表す単一文字である、のいずれか\、または /。 部屋は、次のキャラクターで構成する必要があります。 | 水平壁用 - 垂直壁用 + コーナー用 例:(W = 7、H = 4) +-----+ | | | | +-----+ これで部屋ができたので、壁のタイルの1つを破壊して、光のビームが部屋に落ちるようにします。光のビームは斜めの線で、\と/文字で表されます。 X = 2、Y = 0の壁タイルを\光線に置き換えてみましょう。 +-\---+ | | | | +-----+ 入ってくる光は、鏡の壁に当たるまで部屋を斜めに進みます。壁にぶつかると、壁の軸に沿って方向が反転し、ビームが進みます。 +-\---+ |\ \/\| | \/\/| +-----+ この例では、光ビームは壁の角に当たるポイントに到達します。これにより、ビームは完全に反転し、最後まで戻り、最終的に部屋を出ます。 あなたのタスク …

1
Asciiユーザーインターフェイス
この課題では、Asciiユーザーインターフェイスをレンダリングします。 +----------------------+ |+-----------++-------+| ||<- Previous||Next ->|| |+-----------++-------+| |== The title == | | | |Lorem ipsum dolor | |sit amet... | |+--------------+ | ||Post a comment| | |+--------------+ | |+-----------------+ | ||User X commented:| | || | | ||This is amazing! | | |+-----------------+ | |+-----------------+ | ||User Y commented:| …

12
元の番号(II)
この課題は基本的にこれと同じですが、文字列のどこでも文字をシャッフルできるようになりました。 シナリオ ジョンには重要な数があり、他の人に見られたくない。 彼は、次の手順を使用して番号を暗号化することにしました。 彼の番号は常に非減少列である(すなわち。"1123") 彼は各桁を英語の単語に変換しました。(つまり"123" -> "ONETWOTHREE") そして、文字をランダムに並べ替えます。(つまり"ONETWOTHREE" -> "EEWOOHRNTET") ジョンはそうすることで彼の番号が安全であると感じました。実際、このような暗号化は簡単に解読できます:( 仕事 暗号化された文字列sが与えられたら、あなたの仕事はそれを解読して元の番号を返すことです。 ルール これはコードゴルフであるため、バイト単位の最短回答が優先されます 入力文字列は常に有効であると仮定できます 入力文字列には大文字のみが含まれています 元の番号は常に昇順で配置されます 文字列または整数形式で数値を返すことができます 文字は、文字列全体ではなく、1つの単語間でのみシャッフルされます。文字は、文字列のどこでもシャッフルできます。 数字は1から9までです(ONEからNINE) 可能なスクランブルされていない文字列 以下は、数字から文字列に変換された直後の文字列のリストです。 1 -> ONE 2 -> TWO 3 -> THREE 4 -> FOUR 5 -> FIVE 6 -> SIX 7 -> SEVEN 8 -> EIGHT 9 -> …

12
あなたのベース97はすべて私たちのものです
多くのプログラミング言語は、印刷可能なASCII、タブ、改行のみを使用して記述されています。これらの97文字は、8ビットバイト(実際には256の異なる文字を保持できる!)に格納されます。これは非常に非効率的です-特に、すべてのバイトがカウントされるコードゴルフでは!この課題では、ベースコンバージョンを使用してスコアを下げることができます。 チャレンジ プログラム/関数は、文字列または文字配列を入力として受け取り、それをベース97の数値として解釈します。次に、これを256ベースの数値に変換し、 この数値を表すために必要なシンボル(バイト)の数をカウントします。このカウントは、プログラム/関数の出力/戻り値になります。 base-2およびbase-10(2進および10進)を使用した簡単な例:入力がの場合、1011010110 2 = 22 10(出力を表すのに2桁必要)なので、出力は2になります。同様に、1101 2は13 10になり、出力も2になり、110 2は6 10になるため、出力は1になります。 入力文字列には、95個の印刷可能なASCII文字すべて と、基本変換用の97個の記号のソースアルファベットを作成する改行\n文字とリテラルタブを含めることができます。したがって、正確なアルファベットは次のようになります(and を実際のリテラルタブと改行で置き換えます。改行の後のリテラルスペースに注意してください)。\t\t\n \t\n !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ このアルファベットの順序は重要であることに注意してください。たとえば、base-97 \tはdecimal 0に対応し、decimal に!対応します3。 いくつかのテストケース:(空の文字列を処理する必要はありません) Input Output 'example@domain.com' 15 'All your base are belong to us!' 26 ' abcd' 9 '~ abcd' 10 'ABCDEFGHIJK' 9 'zyxwvutsrpq' 10 '{".~"}.~' 7 '\t\t\t\t\t\t\t\t' 1 (with …

21
自乗した対角線上の位置を出力
数値nを指定すると、n*n正方行列のいずれかの対角要素に該当する1ベースのインデックスの順序付きリストを出力します。 例: 入力の場合3: 正方形は: 1 2 3 4 5 6 7 8 9 ここで\、/またはで表されるすべてのインデックスを選択しますX(#または非対角位置は拒否されます) \ # / # X # / # \ 出力は次のとおりです。 [1,3,5,7,9] テストケース: 1=>[1] 2=>[1,2,3,4] 3=>[1,3,5,7,9] 4=>[1,4,6,7,10,11,13,16] 5=>[1,5,7,9,13,17,19,21,25] 受け入れられる回答はありません。各言語の最短コードを知りたい。
18 code-golf  math  matrix 

3
フィボナッチがクイーンズと出会うとき
(チャットでの「チェス」タグと「フィボナッチ」タグのランダムな組み合わせに対するヘルカの反応に触発された) フィボナッチ フィボナッチ数は、各番号が一緒に前の2つの数字を追加することによって構成されている数学のよりよく知られている配列の一つです。ゼロインデックスシーケンスの定義は次のとおりです。 f(0) = 0 f(1) = 1 f(n) = f(n-1) + f(n-2) これにより、シーケンス0, 1, 1, 2, 3, 5, 8, 13, 21, ...(OEISリンク)が生成されます。この課題では、厳密に正の値(so 1, 1, 2, 3, ...)のみに焦点を当てます。インデックス0またはインデックス1を選択できますが、提出する際にそのことを明記してください。 フィボナッチ数はf(n)、サイズが連続する正方形を使用し、エッジを揃えることにより、平面のタイル化に使用できます。タイリングは、現在の正方形から「右上左下」のパターンで正方形を配置することにより、反時計回りに行われます。この部分的なタイルの例f(8)=21は、次のように、開始正方形が青で強調表示されています。 f(1)=1開始正方形(青で強調表示)、f(2)=1その右側にf(3)=2配置されたf(4)=3正方形、そこから上に配置された正方形、左に配置された正方形などとして見ることができます。次の正方形はf(9)=21+13=34、下に配置されます。これは、このチャレンジで使用する部分的なタイル化方法です。 クイーンズ チェスのゲームでは、任意の数のスペースを水平、垂直、または斜めに移動できるため、最も強力なピースはクイーンです。下のボード図では、黒い円の四角は女王が移動できる場所を示しています。 我々は長期的な定義しますカバレッジを通り 空のボード上の女王の特定の位置と、女王自身の開始位置を含めて、女王が移動できる正方形の割合と正方形の合計数。 上記の例の場合、女王のカバレッジは28/64 = 43.75%です。女王が右上のh8正方形にいた場合、カバレッジはになります22/64 = 34.375%。もし女王がいれば、e7報道はなるでしょう24/64 = 37.5%。 チャレンジ この課題のチェス盤として、上記のフィボナッチタイリングを使用します。入力として2つの正の整数が与えられ、nさらにx: nタイリングがどのように大規模表します。21左の正方形を使用した上記のタイルの例は、(ゼロインデックスの場合)n = 8以降のサイズのボードですf(8) = 21。 xカバレッジを計算するため、クイーン(S)配置のために使用されるフィボナッチ正方形のどちら表します。クイーンは、その特定のフィボナッチ正方形タイルの各正方形に1つずつ配置され、合計カバレッジは個々の(一意の)カバレッジの合計です。 …

6
アノヌンヌッシーラーヴォイッシー
文字とスペースの文字列(非文字を処理する必要はありません)を受け取り、次のようにANNOUNCER VOICE変換アルゴリズムを実行する関数を作成します。 まず、すべてを大文字にします。 単語ごとに、 細長い各文字を三倍にすることにより、各子音クラスタを。ただし、単語が子音クラスタで始まる場合は、そのクラスタを長くしないでください。たとえば、にotherなりますOTTTHHHEEERRRが、になるmotherはずMOTTTHHHEEERRRです。 細長いそれを三倍にすることによって、最終母音を。 いずれの場合においても伸び、あなたはどちらかの側で重複した文字で、文字、最初の合体、それを三倍にしている場合。たとえば、にhillなりHIIILLL、にbookkeeperなりBOOKKKEEPPPEEERRRます。 このチャレンジの目的上y、子音としてカウントされます。 明確化/単純化:単語の各ペアは単一のスペースで区切られ、入力には連続したスペースが含まれておらず、入力は空の文字列ではないと想定できます。 最短のコードが勝ちます! テストベクトル: > sunday sunday SUNNNDDDAAAYYY SUNNNDDDAAAYYY > mia hamm MIAAA HAAAMMM > chester alan arthur CHESSSTTTEEERRR ALLLAAANNN ARRRTTTHHHUUURRR > attention please ATTTENNNTTTIOOONNN PLEASSSEEE > supercalifragilisticexpialidocious SUPPPERRRCCCALLLIFFFRRRAGGGILLLISSSTTTICCCEXXXPPPIALLLIDDDOCCCIOUUUSSS > moo MOOO > Aachen AACCCHHHEEENNN > Oooh OOOHHH > grifffest GRIFFFEEESSSTTT > k …
18 code-golf  string 

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