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

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

16
ボックス内にASCIIボックスを描く
問題 与えられた入力 a,b,c a,b,c正の偶数整数はどこですか そして a > b > c 寸法付きの許可された文字のボックスを作成します a x a b x b前の寸法内の異なる許容文字のボックスを中央に配置します c x c前の寸法内の別の異なる許可された文字のボックスを中央に配置します 許可される文字はASCII文字です [a-zA-z0-9!@#$%^&*()+,./<>?:";=_-+] 入力 a=6, b=4, c=2 ###### #****# #*@@*# #*@@*# #****# ###### 入力 a=8, b=6, c=2 ######## #******# #******# #**@@**# #**@@**# #******# #******# ######## 入力 a=12, b=6, c=2 ############ ############ …

30
ドラゴンカーブシーケンス
ドラゴン曲線配列(または通常の紙折り配列)がバイナリシーケンスです。 a(n)は、の最下位1の左ビットの否定によって与えられnます。たとえば、計算するにa(2136)は、まずバイナリに変換します。 100001011000 最下位ビットを見つけます 100001011000 ^ 少し左へ 100001011000 ^ そしてその否定を返します 0 仕事 入力として正の整数を指定すると、output a(n)。(整数またはブール値で出力できます)。バイト単位で測定したコードをできるだけ小さくすることを目指してください。 テストケース 以下は最初の100エントリです。 1 1 0 1 1 0 0 1 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 0 1 1 0 0 1 0 0 1 1 1 …

30
文字列を分割する
チャレンジ 文字列と番号が与えられると、に文字列を分割し、その多くの等しいサイズの部分。たとえば、数値が3の場合、文字列の長さに関係なく、文字列を3つの部分に分割する必要があります。 文字列の長さが指定された数値に均等に分割されない場合は、各ピースのサイズを切り捨てて「残り」文字列を返す必要があります。たとえば、入力文字列の長さが13で、数値が4の場合、それぞれサイズ3の4つの文字列とサイズ1の残りの文字列を返す必要があります。 余りがない場合、単純にそれを返さないか、空の文字列を返すことができます。 指定された数値は、文字列の長さ以下であることが保証されています。たとえば、7つの文字列に分割できない"PPCG", 7ため、入力は発生し"PPCG"ません。(適切な結果はになると思い(["", "", "", "", "", "", ""], "PPCG")ます。これを入力として単に禁止する方が簡単です。) いつものように、I / Oは柔軟です。文字列のペアと残りの文字列、または最後に残りの文字列のリストを返すことができます。 テストケース "Hello, world!", 4 -> (["Hel", "lo,", " wo", "rld"], "!") ("!" is the remainder) "Hello, world!", 5 -> (["He", "ll", "o,", " w", "or"], "ld!") "ABCDEFGH", 2 -> (["ABCD", "EFGH"], "") (no remainder; …
23 code-golf  string 

18
シャッフルされたカードのデッキを印刷する
入力 なし 出力 52枚。重複なし。カードは、uniなどのユニコード文字として表されます。 Unicodeのコードポイントは、次のフォーマットに従います。 最初の3桁は1F0です。 次の桁であるA、B、C、またはDそれぞれスペード、ハート、ダイヤ、クラブのために。 次の桁がある1経由CしてE様々な数/フェイスカード用。1エースは、ある2- A数のカードです、とB、Dと、Eそれぞれジャッキ、女王、王です。(Cほとんどのデッキにはない騎士です。) 出力例: 🂶🃁🃛🃎🂧🂵🃗🂦🂽🂹🂣🃊🃚🂲🂡🂥🂷🃄🃃🃞🂺🂭🃑🃙🂪🃖🂳🃘🃒🂻🃆🂮🃍🂱🂴🃋🂸🃈🃅🃂🂨🃓🃉🂾🃇🂩🂢🂫🃔🃕 🂤🃝 ルール: これはcode-golfです。最短回答が勝ちます。 禁止された抜け穴は禁止されています。 実際にデッキをランダム化する必要があります。20回実行する場合、20のランダムな(そしておそらく最もユニークな)出力を生成する必要があります。 注意 ボックスのみが表示される場合は、DejaVuフォントをインストールしてください。

6
追加または前置?依存する
Brain-flakは明日1歳になります!誕生日を記念して、PPCGスタイルのバースデーパーティーを開催します。このパーティーでは、数人のユーザーがブレインフラック関連の質問を投稿します。祝福にご協力ください!:) Brain-flakは私が書いた難解な言語で、すべてのコマンドが括弧であり、すべての括弧が完全に一致する必要があります。私自身の定義を借りるには: この課題のために、「括弧」は次の文字のいずれかです()[]{}<>。 次のように、開始ブラケットと終了ブラケットが正しい順序であり、中に文字がない場合、一対のブラケットは「一致」とみなされます。 () []{} または、その中のすべてのサブ要素も一致する場合。 [()()()()] {<[]>} (()()) サブエレメントは、いくつかのレイヤーの深さにネストすることもできます。 [(){<><>[()]}<>()] <[{((()))}]> 次の場合にのみ、文字列は「完全一致」と見なされます。 すべての文字は角かっこです。 ブラケットの各ペアには、正しい開閉ブラケットが正しい順序であります Brain-Flakの1歳の誕生日を祝うために、今日の課題は、不均衡なブラケットセットを取得し、それを有効なBrain-Flakにするために必要な操作の種類を決定することです。 たとえば、((は有効なbrain-flakコードではありませんが、これに追加))すると、になり(())、完全にバランスが取れているため、有効なbrain-flakです。これにより、この入力が追加可能になります。 同様に、>}は有効ではありませんが{<、makeに追加して有効にすることができ{<>}ます。これにより、この入力がprependableになります。 一部の入力はやや複雑です。たとえば、)][({追加または追加するだけでは有効にできません。しかし、それはできる付加することで有効となること[(と追記します})]。したがって、この入力はprependableとappendableの両方です。 最後に、一部の入力は、アペンドまたはプリペンドの任意の組み合わせによって、有効なブレインフラックコードにすることはできません。たとえば、(>有効にすることはできません。(前置を<作成し<(>、及び添付の)作成(>)、有効でどちらも)ため、この入力は、追記又はprependableもありません。 今日の課題では、括弧の文字列を取り、その文字列が appendable prependable both neither 各ケースを表すために使用する値を選択できます。たとえば、、、、1, 2, 3, 4またはを出力する'a', 'p', 'b', 'n'か1, 'foo', 3.1415, -17、何でも問題ありません。各出力が明確で一貫している限り、それは問題ありません。あなたはしなければならないが、明らかに出力対応の場合に指定します。 最も便利な形式でこの値を返すことができます(たとえば、関数から戻る、STDOUTに出力する、引数を変更する、ファイルに書き込むなど)。 入力が有効なブレインフラークまたは空になることはないと想定できます。 例 次の入力はすべて付加可能です: )) (((()()())))} )>}] ()[]{}<>) これらはすべて追加可能です: (({}{}) (((( ([]()())( {<<{ これらはすべて両方です: …

13
100バイト未満で成長が最も遅い関数を作成します
あなたの仕事は、成長が最も遅い関数を100バイト以内で作成することです。 プログラムは、入力として非負の整数を受け取り、非負の整数を出力します。プログラムをPと呼びましょう。 次の2つの基準を満たす必要があります。 ソースコードは100バイト以下である必要があります。 すべてのKに対してNがあり、n> = NごとにP(n)> Kになります。つまり、lim (n->∞) P(n)=∞です。(これが「成長する」ことの意味です。) 「スコア」は、プログラムの基礎となる機能の成長率です。 より具体的には、プログラムPは、すべてのn> = N、P(n)<= Q(n)のようなNがあり、P(n )<Q(n)。どちらのプログラムも他のプログラムより優れている場合、それらは結び付けられます。(本質的に、どのプログラムが遅いかは、lim (n->∞) P(n)-Q(n)の値に基づいています。) 最も遅い成長関数は、前の段落の定義に従って、他のどの関数よりもゆっくり成長する関数として定義されます。 これはgrowth-rate-golfであるため、最も遅い成長プログラムが勝ちます! ノート: スコアリングを支援するために、プログラムが計算する関数を答えに入れてみてください。 また、(理論的な)入力と出力をいくつか入れて、どれだけ時間がかかるかを人々に教えてください。

15
1つの数字で構成できる英数字の数を調べる
英数字にはASCII値があります。 0-9 -> 48-57 A-Z -> 65-90 a-z -> 97-122 あなたの挑戦は、入力として整数を取り、その数の連続した数字を使用して作成できる文字数を出力することです。文字コードが重複している可能性があります。が2回ある666ため、結果は2になります66。 テストケース: Input: 5698 Possible characters: '8' (56), 'E' (69), 'b' (98) Output: 3 Input: 564693 Possible characters: '8' (56), 'E' (69) Output: 2 Input: 530923864209124521 Possible characters: '5' (53), 'V' (86), '4' (52) Output: 3 Input: 1111111 Possible characters: …
23 code-golf  string 

2
「サブベクトル反転」を使用してソートを最適化する
これは、最小の反転を使用してベクトルを昇順でソートすることを目的とする、操作が最も少ないチャレンジです。アルゴリズムは「サブベクトル反転」1を使用してのみベクトルをソートできますが、算術演算、ループ、ソートされているかどうかの確認などに他の演算を使用できます。アルゴリズムが実行するサブベクトル反転の数はスコアです。 1 「サブベクトル反転」: ベクトル内の数値の範囲を選択し、その範囲内の要素を逆にします。 簡単な例を挙げると、vector {4,3,2,1}から始める場合、さまざまな方法で並べ替えることができます。 ベクトル全体を反転します。これは、1回の反転のみを必要とするため、明らかに最短のアプローチです。{4,3,2,1} -> {1,2,3,4} バブルソートのバージョンを実行できます。これには、6回の取り消しが必要です。 {4,3,2,1} -> {3,4,2,1} -> {3,2,4,1} -> {2,3,4,1} -> {2,3,1,4} -> {2,1,3,4} -> {1,2,3,4} 最初の3つの要素から始めて、最後に3つ、最後に最初の2つと最後の2つで、4つのスワップが必要です。 {4,3,2,1} -> {2,3,4,1} -> {2,1,4,3} -> {1,2,4,3} -> {1,2,3,4} ... 等々。使用可能なオプションは無限にあります(必要に応じて、任意の操作を繰り返すことができます)。 ルールと要件: 100個の数字を含むリストの場合、コードは1分未満で終了する必要があります。これは自分で時間を計ることができますが、フェア2をプレイしてください。 ソリューションを検証できるように、実行するすべてのスワップの開始インデックスと終了インデックスを保存する必要があります。(これの意味を以下で説明します)。 コードは確定的でなければなりません。 数値ベクトル、リンクリスト、長さの配列など、任意の形式で入力を取得できます。 ベクターのコピーで何でもできます。これには、さまざまな反転の試行と、最も効率的なチェックが含まれます。総当たり攻撃はまったく問題ありませんが、制限時間を守ってください。 スコアは、5つのテストベクトルのフリップの総数です。タイブレーカーは日付スタンプになります。 例: 4 1 23 21 49 2 7 …

3
ドラゴンのイメージ
正方形から作られた双竜の曲線のクールなGIFを見て、別のベース画像から始めたらどうなるのだろうと思った。そこで、これを行うプログラムを作成しました。 とてもクールなので、チャレンジとしてそれをするのは楽しいと思いました。 仕事 エッジの長さが2の累乗(4より大きい)の正方形の画像を取り込みます。 この画像を作成するには、画像を同じサイズの4つの垂直バンドに分割し、隣接するバンドを画像のサイズの1/8の反対方向にシフトすることから始めます(シフトしたバンドは反対側に回り込む必要があります)。その後、イメージを2倍の分割に分割し、前の半分までシフトするたびに、このプロセスを繰り返す必要があります。各反復では、垂直シフトと水平シフトを交互に行う必要があります。シフトを行うには、ピクセルの端数(これは常に1/2になる)だけシフトする必要があるまで、その時点で繰り返す必要があります。 垂直に奇数のバンドを左からシフトする場合(インデックスがゼロ)、下にシフトし、偶数にシフトします。水平方向に奇数のバンドを上からシフトする場合は、左にシフトし、偶数のバンドを右にシフトする必要があります。 変換の最終結果を出力/表示するだけでよく、gifのようなすべての中間ステップではありません。 これはコードゴルフなので、目標は、ソースコードの長さをバイト単位で最小化することです。 例を通して働いた ページの上部に表示される猫のgifをフレームごとに処理します。 これが開始イメージです。 この画像は512 x 512ピクセルです。4つのバンドに分割して、各バンドを開始し、画像サイズの1/8(64ピクセル)ずつ垂直にシフトします。 これを2倍のバンド(8バンド)に分割し、前回の半分(32ピクセル)までシフトします。今回は水平にシフトします。 今度は再び垂直方向にシフトし、今回は16バンドに分割し、各バンドを16ピクセルずつシフトします。 32バンド、8ピクセル、水平シフト 64バンド、4ピクセル、垂直シフト。 128バンド、2ピクセル、水平シフト。 256バンド、1ピクセル、垂直シフト。 次のシフトでは各バンドを半ピクセルずつ移動する必要があるため、この時点で停止して結果を出力します。 テストケース これらの画像を作成できる作業スクリプトがあるので、テストケースの画像を選択できるようにしたいと思いました。したがって、幅が2のべき乗である正方形の画像があり、その画像をドラゴンにしたい場合があります。それを私に送ってください、そして、私はそれをテストケースにします。 また、ピクセルが消えているかどうかを判断できるように、白または黒一色のイメージでテストする必要があります。

16
今日のランダムゴルフ#8:無限リストをシャッフル
シリーズについて まず、これを他のコードゴルフチャレンジと同様に扱い、シリーズについてまったく心配することなく答えることができます。ただし、すべての課題にリーダーボードがあります。最初の投稿では、リーダーボードとシリーズに関する詳細情報を見つけることができます。 8番ホール:無限リストをシャッフルする 入力として無限リストを取り、そのリストのシャッフルされたバージョンを返す関数またはプログラムを作成する必要があります。 無限I / Oについて このチャレンジの入力を取得して出力を生成する方法はいくつかあります。 正の整数のリスト、またはその文字列表現、または印刷可能なASCII文字(0x20〜0x7Eを含む)の文字列またはリストを使用できます。出力形式は入力形式と一致する必要があります。選択したオプションに関係なく、今後はデータを「リスト」と呼びます。 無限標準入力ストリームからリストを読み取り、無限標準出力ストリームに出力を連続的に書き込むことができます。ソリューションは、出力ストリームが定期的に書き込まれ、フラッシュされることを保証するために、特定の値または値のシーケンスに依存してはなりません(たとえば5、入力リストにaがある場合は出力を書き込むことはできません)。もちろん、リストの文字列表現を読んだ場合、リストの区切りに遭遇するまで待つのは問題ありません。 それらをサポートする言語では、怠zyな無限リストまたは文字列を受け取って返す関数を作成できます。 それらをサポートする言語では、入力として別のジェネレーターを使用する無限ジェネレーターを実装できます。 あるいは、引数を取らず、呼び出されるたびに1つの出力値を返す関数を作成できます。この場合、引数をとらず、呼び出されるたびに次の入力値を返す関数が定義されていると想定できます。その関数の名前は自由に選択できます。 プログラムが永久に実行され、無限のメモリが利用可能であると仮定するかもしれません。(有限のメモリ量でこれを解決することは可能ですが、これが意味することは、メモリをリークすることを許可されているということです。) ランダム性について 無限入力の位置iで読み取られる値vについては、無限出力の位置i-9からi + 9のいずれかで終わるための正の確率がなければなりません(その位置が負でない限り) )。これらの確率は、異なる出力位置、または異なる入力位置でも同じである必要はありません。ソリューションが値をさらに離れた別の位置にシャッフルできる場合も問題ありません。 したがって、ソリューションが最初の値をリストの非常に下までシャッフルしたり、最初の位置まで非常に遅い値をシャッフルしたりする必要はありません。入力が可能です。 たとえば、次の文字列を入力として使用した場合、___はX、出力で終了する必要があるすべての位置を示します。 ___________________ abcdefghijklmnopqrstuvwxyzXabcdefghijklmnopqrstuvwxyz... 言語に組み込みの乱数ジェネレーターがない場合、または使用したくない場合は、入力として追加のシード値を取得し、シードを使用して適切なRNGを実装できます。このページはそのために役立つかもしれません。 ソリューションが使用する実際の分布に関係なく、有限(ただし任意)の時間後にほぼ確実に次の値を生成する必要があります。 実装がこれらの要件を満たす方法についての簡単な説明を含めてください。 得点 これはcode-golfであるため、バイト単位で測定された最短の有効な答えが勝ちです。 リーダーボード シリーズの最初の投稿はリーダーボードを生成します。 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、すべての回答を見出しで開始してください。 # Language Name, N bytes N提出物のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば: # Ruby, <s>104</s> <s>101</s> 96 bytes (言語は現在表示されていませんが、スニペットはそれを必要とし、解析します。将来、言語ごとのリーダーボードを追加するかもしれません。)

10
雨滴が私の…グラスに落ちていますか?
私は雨が降る英国に住んでいます。たくさん。また、見るためにメガネを着用する必要があるという不幸な必要性があります。つまり、雨が降ったとき(現在のように)、私はメガネをほとんど見ることができません。この挑戦はあなたがすべて同じことを経験できるようにするためです! 仕事 毎秒水滴が追加されたASCIIアートグラスを出力します。 入力 なし 出力 水滴が付いた眼鏡。 眼鏡 ________________________ | /__\ | | / \ | | / \ | \_______/ \_______/ 雨滴 雨滴はで示されます.。雨滴がメガネのレンズにランダムに配置されます。雨滴が置かれると、メガネは次のようになります ________________________ | /__\ | | . / \ | | / \ | \_______/ \_______/ 空白スペース()に.配置されている場合、イメージに配置されます。既に雨滴のある正方形に置かれた場合、滴は卒業します。 ドロップの手順は 滴下なし: 1滴配置: . 配置された2つのドロップ: o 配置された3つのドロップ: O 4個以上のドロップを配置: @ …

10
自然ログのアリ
これは良い初心者の挑戦であり、良い時間のキラーです。 タイトルが短すぎたため、自然対数だけを言いました。これは対数とは関係ありません。 与えられた2つの変数: アリの数n。 ログの幅w。 幅のログwをnアリで出力します(例はw=3、n=6) | | | \O/ \O/ \O/ | | -O- -O- -O- | | /o\ /o\ /o\ | | ^ ^ ^ | | | | \O/ \O/ \O/ | | -O- -O- -O- | | /o\ /o\ /o\ | | ^ ^ ^ | …

20
文字列を部分文字列で作成できるかどうかをテストしてください!
文字列sと配列/リストlを指定すると、sからの部分で作成できるかどうかを判断しlます。 たとえば、文字列が"Hello, world!"でリストがの[' world!', 'Hello,']場合、プログラム/関数は真の値を返す必要があります。これは、文字列を形成するようにリストを配置できるためです。次のリストも真偽値を返します['l', 'He', 'o, wor', 'd!']。'l'ひもの中の必要な場所を埋めることを想像してください。そのため、リストの要素を繰り返して文字列を形成できます。文字列を形成できない場合、偽の値を返す必要があります。IOの標準的な方法、標準的な抜け穴が適用されます。 テストケース: Input (In the form of s, l) Output (1 if possible, 0 if impossible) "Hello, world!", ["l", "He", "o, wor", "d!"] 1 "la lal al ", ["la", " l", "al "] 1 "this is a string", ["this should return falsy"] …

12
Diffyゲームは劣化していますか?
最近、Diffyゲームに関する質問を投稿しましたが、回答がありませんでした。結構です、質問は本当に難しいですが、Diffyゲームについて簡単な質問をして、ボールが転がるようにしたいと思います。 Diffyの仕組み Find Diffy Gamesからコピー Diffyゲームは次のように機能します。まず、負でない整数のリストから始めます。この例では、 3 4 5 8 次に、隣接する番号の絶対差を取ります (8) 3 4 5 8 5 1 1 3 その後、繰り返します。ループに入ったことに気付くまで繰り返します。そして、一般的にゲームは最初から再び始まります。 3 4 5 8 5 1 1 3 2 4 0 2 0 2 4 2 2 2 2 2 0 0 0 0 0 0 0 0 ほとんどのゲームは負け状態とみなされるすべてゼロの文字列で終了しますが、まれにいくつかのゲームが大きなループでスタックすることがあります。 …

30
他の要素の合計のパリティ
仕事 正の整数の配列を指定して、各要素を他の要素の合計のパリティで置き換えます。配列には、少なくとも 2つの要素があることが保証されています。 定義 パリティ:数値が奇数か偶数か。 例 配列の場合[1,2,3,1]: 置き換え1のパリティ付き2+3+1すなわち、even。 置き換え2のパリティ付き1+3+1すなわち、odd。 置き換え3のパリティ付き1+2+1すなわち、even。 置き換え1のパリティ付き1+2+3すなわち、even。 出力: [even, odd, even, even] 入力 正の整数の配列。 適切な配列、または正整数の改行で区切られた文字列として取得できます。 配列とその中の値は、言語の処理能力の範囲内であると想定できます。 出力 アレイ2つの一貫した値、1を表すodd、表す1 even。 2つの値を改行で区切った文字列として出力できます。 テストケース 入力: [1, 2, 3, 1] [1, 2, 3, 2, 1] [2, 2] [100, 1001] 出力: [even, odd, even, even] [even, odd, even, odd, even] [even, …

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