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

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

14
ママ見て!私は自分の(Base 10)数字システムを作りました![閉まっている]
閉じた。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善したいですか?詳細を追加し、この投稿を編集して問題を明確にします。 4か月前に閉鎖されました。 たぶん、そうではないかもしれませんが、独自の外国語と番号付けシステムを作成することは、特に空想的な執筆の主流ですが、ほとんどの場合は楽しいアクティビティです。 タスクは簡単で、2つの入力を取ります。 10 [10]個の一意の「数字」(印刷可能なASCII文字)の順序付きリスト入力で、値0、1、2、3、...、9として順番に解釈します +ここで数字にできるものには例外があります。算術演算子(+、-、*、/)、括弧、およびスペースは数字の1つとして使用できません。 それらの「数字」のみを使用した算術問題 そして、与えられた形式で同等の整数結果を出力します。 以下に例を示します。 INPUT abcdefghij bcd + efg + hij OUTPUT bdgi この例では、「abcdefghij」の入力リスト(リストの入力形式を選択できます)は「0123456789」に対応します。これは、「hjkloiwdfp」も「a」ではなく「aゼロ、「h」は。'translate'に続く算術は1368に等しい123 + 456 + 789に変換されます。これは指定した形式で出力する必要があるため、b(1を表す)d(2の場合)g(6の場合)およびi( 8)。 テストケース abcdefghij abc + def - ghij -gedc qwertyuiop qwerty / uiop e %y83l;[=9| (83l * 9) + 8% y9|8 より多くのルール 標準的な抜け穴 は禁止されています! これはコードゴルフであるため、バイト単位の最短回答が優先されます。 …

6
折り畳まれた行列を減算する
チャレンジ: および8つの異なる「折りたたみオプション」の1つであるNxN行列が与えられた場合、値が減算された2D配列/リストを出力します。N≥ 2N≥2N\geq2 8つの折りたたみオプションは次のとおりです。左から右。右から左へ; 上から下へ; 下から上 左上から右下; topright-to-bottomleft; 左下から右上へ。下から左へ。 段階的な例: 入力行列: [[ 1, 3, 5, 7], [ 0, 8, 6, 4], [ 1, 1, 1, 1], (a'th row in the explanation below) [ 1,25, 0,75]] 折りたたみオプションを上から下にすると、次の結果が出力されます。 [[ 1,-7,-5,-3], [ 0,22,-5,68]] どうして?上から下に折ります。マトリックスの次元は均一なので、そのまま保持する中間層はありません。「行が減算される行目(であったであろう」の奇数次元行列の「行目)。そうなります。番目の行は、次に減算される行目(であったであろう」奇数次元行列の「行目)。そうなります。aaa[1, 1, 1, 1](a − 1 )(a−1)(a-1)(a − 2 )(a−2)(a-2)[1-0, …

8
それが立ち往生するまで壁に続く蛇で迷路を埋めます
迷路をヘビで満たしてください(動けなくなるまで)。 ヘビ ヘビは、EASTを指す所定の開始点で開始します。それはすぐに、常に壁やその体の一部を持っていることによって移動LEFTその頭の(「左手の法則壁フォロワーその頭の周りのすべての4つの方向が占有されているので、それが立ち往生なるまで、」)。(注:立ち往生しているヘビは、到達可能なすべてのスペースを埋めることはできませんが、それは目標ではありません!) チャレンジ 2Dテキストの形式で迷路を入力として受け入れるプログラムまたは関数を作成します。 入力は、文字列のリスト、改行を含む単一の文字列、ファイルなど、合理的な形式で入力できます。 迷路には、壁( " #")、空のスペース( " ")、および1つの開始点( " o")があります。 選ぶことができます 最初と最後の行と列が完全に壁であると仮定します。 または、すべての入力が暗黙の壁の外層を持つと見なされると仮定します 開始点のすぐ上に壁(または暗黙の壁)があり(NORTH)、ヘビが東または南方向に有効な開始移動を行うことができると仮定できます。 テキストに他の文字が存在しないと仮定できます(入力に必要な場合は改行を除きます)。 すべての行が同じ長さであると想定できます。 そして、出力として「塗りつぶされた迷路」を印刷/返し、スタックした瞬間のヘビのスナップショットを返します。 ヘビの体は、次のセグメントが>v<^どこにあるかを指し示す文字で表されます ヘビの開始点は、開始時の方向(>すぐに方向転換oする必要がない限り" " ")またはキャラクター(一貫性のある必要はありません)のいずれかです。 ヘビの終点はoキャラクターです 得点 通常のゴルフ:最短のコードが勝つ 例 in: ################################# # o # # # # ## ### ## # # ## ## ## ## # # ## ## ## …

5
合同数
定義: 三角形が考慮される直角三角形内角の一つが正確に90度である場合。 番号が考えられる合理的なことは、すなわち、整数の比で表すことができるならばp/q、両方の場所、pおよびq整数です。 3つの辺すべてが合理的な領域の直角三角形が存在する場合n、数値は合同の数値ですn。 これはOEIS A003273です。 チャレンジ これは意思決定の課題です。入力数が与えられると、合同数であるx場合xは明確で一貫した値を出力し、合同数でxない場合は別個の明確で一貫した値を出力します。出力値は、必ずしも言語で真実/偽である必要はありません。 特別ルール この挑戦の目的のために、バーチとスウィナートン-ダイアーの予想は真実であると仮定することができます。あるいは、Birch and Swinnerton-Dyerの予想を証明できる場合は、1,000,000ドルのミレニアム賞金を請求​​してください。;-) 例 (True合同数などに使用False)。 5 True 6 True 108 False 規則と説明 入力と出力は、任意の便利な方法で指定できます。 結果をSTDOUTに出力するか、関数結果として返すことができます。出力でどの値を取ることができるかを提出してください。 完全なプログラムまたは機能のいずれかが受け入れられます。 標準的な抜け穴は禁止されています。 これはコードゴルフなので、通常のゴルフルールがすべて適用され、最短のコード(バイト単位)が勝ちます。

12
蛇のようなスリザー
アイデア これまでにマトリックススパイラル、完全回転、さらには対角回転を行ってきましたが、私が知る限り、スネーク回転はしていません! ヘビの回転とは何ですか? 行列の行が前後に蛇行し、それらの間の仕切りが長い待ち行列の仕切りのようになっていると想像してください。 +--------------+ 1 2 3 4 5| +------------ | |10 9 8 7 6| | +-----------+ |11 12 13 14 15| +------------ | 20 19 18 17 16| +--------------+ ここで、これらのアイテムを2回転させることを想像してください。各アイテムは、人が一列に移動するように進み、最後のアイテムがあふれ出て最初に戻ります。 +--------------+ --> 19 20 1 2 3| +------------ | | 8 7 6 5 4| | +-----------+ …

6
キーボードを横切る
入力として単語(または文字のシーケンス)が与えられた場合、QWERTYキーボードでも、巨大なキーボードを歩いて入力を入力したかのように、結果の隣接する各文字ペアが隣接するように、各文字間を補間する必要があります。たとえば、 ' はい ' 'になる可能性がありますY TR ES '、 ' 猫は ' 'になる可能性がありますC XZ A WER トン '。 ルール: これは、使用すべきキーボード形式です。 qwertyuiop asdfghjkl zxcvbnm このレイアウトで触れているキーのペアは、隣接していると見なされます。たとえば、「s」と「e」は隣接していますが、「s」と「r」は隣接していません。 入力「単語」は、任意の文字列で構成されます。文字のみであるため、特殊文字を扱う必要はありません。 入力は、stdin、文字列、リストなどの任意の便利な形式にすることができます。大文字と小文字は区別されません。より便利なものなら何でも取ることができます。 出力は、stdout、文字列、リストなどの便利な形式にすることができます。大文字と小文字は区別されず、一貫している必要はありません。 次の文字に到達する前に前の文字を再度横切ることができないことを除いて、キーボードを通るパスはすべて有効です。たとえば、「hi」は「h j i」または「h jnbgyu i」になりますが、「h b h u i」にはなりません。 手紙はそれ自体と隣接していないため、 ' poll 'は ' poll 'になりません。代わりに、 ' pol k l 'のようなものになる必要があります。 単語の前後に出力文字を含めることはできません。たとえば、「だった」は「tre だった」または「だった dfg」になることはできません。 …

11
ASCIIアートを45度回転
あなたの仕事は、ASCIIアート画像を取得し、それを時計回りに45度回転し、倍率で出力することです。スケーリングは、文字間にスペースを導入するラティスパターンを使用することで実現されます。2–√2\sqrt 2 視覚的に説明すると、ブロックは次のように処理されます。3 × 33×33 \times 3 123 456 789 になる 1 4 2 7 5 3 8 6 9 文字は変換されないため、回転後のボックスは奇妙に見えます。 +-+ | | +-+ になる + | - + + - | + プロセスをより明確に説明するために、出力は菱形格子パターンで構成され、上の行は入力の左上文字に対応し、次の行は右隣および下隣に対応し、次の行は隣人などになります。すべてのキャラクターがラティスに配置されるまで。 例 FISHKISSFISHKIS SFISHKISSFISHKISSFISH F ISHK ISSFISHKISSFISHKISS FI SHKISS FISHKISSFISHKISSFISS FIS HKISSFISHKISSFISHKISSFISHKISSFISH KISS FISHKISSFISHKISSFISHKISSFISHKISS FISHK SSFISHKISSFISHKISSFISHKISSFISHKISSF …

23
ポインタージャンプ
配列内のある場所を指すポインターを持つ長さ配列がとします。「ポインタージャンプ」のプロセスは、すべてのポインターを、ポインターが指す場所に設定します。PSps\texttt{ps}nnn このチャレンジのために、ポインターは配列の要素の(ゼロベースの)インデックスです。これは、配列のすべての要素が以上未満であることをます。この表記を使用すると、プロセスは次のように定式化できます。000nnn for i = 0..(n-1) { ps[i] = ps[ps[i]] } これは、(このチャレンジのために)ポインタが順番にインプレースで更新されることを意味します(つまり、インデックスが最初に低い)。 例 例、みましょう。PS = [2,1,4,1,3,2]ps = [2,1,4,1,3,2]\texttt{ps = [2,1,4,1,3,2]} 私 = 0:位置 ps [0]の要素 = 2 点から 4点 → ps= [4,1,4,1,3,2]私 = 1:位置 ps [1]の要素 = 1 点に 1→ ps= [4,1,4,1,3,2]私 = 2:位置 ps [2]の要素 = 4 点から 3点 …

12
拡張フィボナッチ数のインデックス付け
あなたはおそらくフィボナッチ数を聞いたことがあるでしょう。や、知っている、その整数シーケンスはで始まり1, 1、新しい番号はそれぞれ最後の2つの合計ですか? 1 1 2 3 5 8 13... 等々。フィボナッチ数に関する課題は、ここでかなり人気があります。しかし、誰がフィボナッチ数列を始めなければならないと言うの1, 1でしょうか?なぜ始められなかったの0, 1ですか?それでは、0から開始するように再定義しましょう。 0 1 1 2 3 5 8 13... しかし...私たちもそこでやめる必要はありません!最後の2つの数値を追加して次の数値を取得できる場合、2番目の数値から最初の数値を減算して新しい数値を追加することもできます。したがって、次のように開始でき1, 0ます。 1 0 1 1 2 3 5 8 13... ネガティブになることさえあります: -1 1 0 1 1 2 3 5 8 13... そして、このシリーズも永遠に続きます。他のすべての数字が負になっているだけで、通常のフィボナッチ数列をミラーリングするのは面白いと思います: 13 -8 5 -3 2 -1 1 …

15
クラシックVCS ASCIIアドベンチャー
成長して、私の最初のコンソールゲームシステムはAtari 2600でした。私は子供の頃にとても楽しんだゲームのいくつかを常に愛しています。グラフィックの多くはまだ記憶に残るものであり、おそらく象徴的です。 これらのスプライトは非常に単純なビットマップで、幅が8ピクセルで、高さが可変であり、バイナリ表現はピクセルの配置です。 たとえば、16進バイト0x18、0x24、0x18は、次のような粗い円を描きます。 0x18: 00011000 0x24: 00100100 0x18: 00011000 8ピクセル幅はかなり小さなグラフィックスを作成するため(Atari 2600規格でも)、高さ、幅、またはその両方を2倍または4倍にして、同じ画像のより大きな(よりブロッキーでゆがんだ)バージョンを作成するのが一般的でした。通常、プレーヤーのスプライトとプレイフィールドの両方で、垂直または水平に反転されます。ゲームの戦闘はこれの良い例です。 課題は、これらのスプライトをASCII形式の「グラフィック」として表示するコードを作成することです。これには、スプライトを垂直、水平、またはその両方に伸縮する機能が含まれます。これは、完全なプログラムまたは呼び出し可能な関数の形式である必要があります。 入力: それぞれがその行の水平ビットを表すバイトの配列。 各方向のゼロ以外の整数値。水平および垂直は、その次元のスケーリング係数を表します。 負の値は、ディメンションが軸に沿って反転されることを示します。 出力: STDOUTまたは改行で区切られた文字列へのASCII表現。黒(0)ピクセルにはスペース文字を使用し、白(1)ピクセルには任意の印刷可能な非スペース文字を使用します。 テストデータ: bmp1 = [ 0x06, 0x0F, 0xF3, 0xFE, 0x0E, 0x04, 0x04, 0x1E, 0x3F, 0x7F, 0xE3, 0xC3, 0xC3, 0xC7, 0xFF, 0x3C, 0x08, 0x8F, 0xE1, 0x3F ] bmp2 = [ 0x07, 0xFD, 0xA7 …

14
プライム封じ込め番号(ゴルフ版)
これはシーケンスA054261です。 素数封じ込め番号番目は、第含ま最小数であるのサブストリングとして素数を。たとえば、番号は、サブストリングとして最初の3つの素数を含む最小の番号であり、3番目の素数格納番号になります。nnnnnn235235235 最初の4つの素数封じ込め番号があることを把握することは簡単です、、および、しかし、それはより面白いです。次の素数は11であるため、次の素数の包含番号はではありませんが、プロパティで最小の数として定義されているため、です。222232323235235235235723572357235711235711235711112357112357112357 ただし、11を超えると実際の課題が発生します。次の素数の包含番号はです。この数値では、部分文字列と が重複していることに注意してください。番号も番号と重複しています。1132571132571132571113313 次の番号は、その前にある番号のすべての基準を満たし、さらに1つのサブストリングを持つ必要があるため、このシーケンスが増加していることを証明するのは簡単です。ただし、n=10との結果が示すように、シーケンスは厳密には増加していませんn=11。 入力 単一の整数n>0(0インデックスを付けてからを作成することもできますn>=0) 出力 どちらのn目プライム封じ込め番号、または最初に含まれているリストnプライム封じ込め番号を。 私がこれまでに見つけた数字は次のとおりです。 1 => 2 2 => 23 3 => 235 4 => 2357 5 => 112357 6 => 113257 7 => 1131725 8 => 113171925 9 => 1131719235 10 => 113171923295 11 => 113171923295 12 => 1131719237295 はすべての数字を含む最小の数字であるが、も含むため、n = 10とn …

30
配列からチャンクを作成する
あなたの仕事は、配列と番号を指定したプログラムを書くことです。配列をサイズがnumberのチャンクに分割する必要があります。 ルール プログラムはA、正の整数だけでなく配列も受け取りnます。n文字列の長さがn残りの部分で割り切れない場合、配列をlengthのチャンクに分割する必要があります。 nがarrayの長さよりも大きい場合は、array Aを返す必要があります。A例:if n = 4およびarray A = [1,2,3]、返す必要があります[1,2,3] 配列には、数値ではなく任意のタイプを含めることができます。 アイテムの順序(または方向)を左から右に変更しないでください。たとえばif n = 2とA= [1,2,3]。結果は[[1,2],[3]]無効ではありません。 テストケース n A Output 2 [1,2,3,4,5,6] [[1,2],[3,4],[5,6]] 3 [1,2,3,4,5,6] [[1,2,3],[4,5,6]] 4 [1,2,3,4,5,6] [[1,2,3,4],[5,6]] これはcode-golfなので、各言語の最短バイトが勝者になります。

23
転校(1日目)
大学コードチャレンジコンテストの許可を得て撮影したチャレンジ ここ数年、私の学校の生徒数は着実に増加しています。最初は教室ごとに生徒数が増加しましたが、ジムスタンドや最後のコースであるほうきの部屋まで、いくつかのグループがそこにクラスを提供するためにいくつかのスペースを変換する必要がありました。 昨年、学術機関は新しい建物を建設する予算を得て、工事を開始しました。やっと彼らは終わり、新しい建物はすでに使用できるので、移動することができます(古い建物は修復され、別の機能に使用されます)が、コースの途中で私たちを捕まえました。ディレクターは、グループを分割または参加せずに移動できるかどうか、または一部の学生がグループを変更する必要があることを知りたいと考えています。 チャレンジ 現在のグループの学生数と新しい教室(容量)を考慮して、十分な容量を持つ別の教室を現在の各グループに割り当てることができる場合は真実の値を、そうでなければ偽の値を出力します。 テストケース Input: groups of students => [10, 20, 30], classrooms capacity => [31, 12, 20] Output: True Input: groups of students => [10, 20, 30], classrooms capacity => [100, 200] Output: False Input: groups of students => [20, 10, 30], classrooms capacity => [20, 20, …

17
スプリットマークのマーク
チャレンジ マークは、N単一の行で連結された方法でマークを受け取る学生です。 課題は、各マークが唯一できることを知って、彼のマークを分離することである0か、1または2または3または4または5または6または7または8または9または10。 入力 N 自然数と1行。 出力 自然数のセット。 例 N, One line------------------> Set of marks 3, '843'---------------------> [8, 4, 3] 1, '0'-----------------------> [0] 2, '1010'--------------------> [10,10] 3, '1010'--------------------> [1,0,10] or [10,1,0] 4, '1010'--------------------> [1,0,1,0] 9, '23104441070'-------------> [2, 3, 10, 4, 4, 4, 10, 7, 0] 12,'499102102121103'---------> [4, 9, 9, 10, …

15
私の配列はこれに等しいはずですが、そうではありません!
n個の整数と単一の整数aを含む整数の配列を指定します。から最小の要素を削除して、合計をに等しくします。の組み合わせが形成できない場合、偽の値を返します。xaaxax コメントで指摘されているように、これはxの合計を含む最大セットです。大学以来多くの用語を忘れていました。 例(真実): f([1,2,3,4,5,6,7,8,9,10], 10) = [1,2,3,4] f([2,2,2,2,2,2,2,2,2], 10) = [2,2,2,2,2] f([2,2,2,2,-2,-2,-2,-4,-2], -8) = [2,2,-2,-2,-2,-4,-2] f([-2,-4,-2], -6) = [-4,-2] OR [-2,-4] f([2,2,2,4,2,-2,-2,-2,-4,-2], 0) = [2,2,2,4,2,-2,-2,-2,-4,-2] (変更なし) f([], 0) = [] (ゼロサムケースの変更なし) 例(偽、一貫性のある非配列値): ケースを作ることが不可能: f([-2,4,6,-8], 3) = falsy (E.G. -1) ゼロサムケース: f([], non-zero number) = falsy (E.G. -1) 注:のような値[-1]は、潜在的な真実の出力であるため、偽造には有効ではありません。 ルール: 入力は、配列形式で、または引数のリストとして、最後または最初として取得できますx。 …

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