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

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

16
INTERCALの二項演算子を実装する
発音可能な頭字語のないコンパイラ言語(略してINTERCAL)は、非常にユニークなプログラミング言語です。その再現性のなさの中には、二項演算子があります。 INTERCALの2つの2項演算子は、インターリーブ(ミングルとも呼ばれます)、およびselectです。インターリーブは変更(¢)で表され、選択は波形(〜)で表されます。 インターリーブは、0〜65535の範囲の2つの数値を取得し、それらのビットを交互に切り替えることで機能します。例えば: 234 ¢ 4321 234 = 0000011101010 4321 = 1000011100001 Result: 01000000001111110010001001 Output: 16841865 Selectは、0〜65535の範囲の2つの数値を取得し、2番目のオペランドの1と同じ位置にある最初のオペランドのビットを取得し、それらのビットを右詰めします。 2345 ~ 7245 2345 = 0100100101001 7245 = 1110001001101 Taken : 010 0 10 1 Result: 0100101 Output: 37 この課題では、インターリーブまたは選択操作のいずれかを使用してバイナリ式が与えられます。可能な限り少ないバイトを使用して、結果を計算する必要があります。 式は、0〜65535の整数、スペース¢または~、スペース、0〜65535の整数で構成されるスペース区切りの文字列として指定されます。 入力および出力は、標準システム(STDIN、関数、コマンドラインなど)を介して行うことができます。標準的な抜け穴は禁止されています。 例: 5 ¢ 6 54 5 ~ 6 2 51234 ¢ …
29 code-golf 

30
分厚い対滑らかな弦
Peanut ButterN = 13 などの長さNの文字列を考えてみましょう。文字列にはN-1組の隣接文字があることに注意してください。ためにPeanut Butter12対の最初でありPe、第二はea、最後ですer。 ペアは主に異なる文字である場合は、文字列は、例えば、分厚い品質を持っていますchUnky。 これらのペアがほとんど同じ文字である場合、文字列は滑らかな品質になりsssmmsssます。 ペアの合計数(N-1)に対する2つの異なる文字を持つペアの数の比率になるように、文字列のチャンクネスを定義します。 ペアの合計数(N-1)に対する2つの同一の文字を持つペアの数の比率になるように、文字列の滑らかさを定義します。 たとえば、Peanut Butter同一の文字(tt)のペアが1つしかないため、その滑らかさは1/12または0.0833で、チャンクネスは11/12または0.9167です。 空の文字列と1文字のみの文字列は、100%スムーズで0%チャンキーと定義されます。 チャレンジ 任意の長さの文字列を取り込んで、そのチャンクネスまたはスムーズ比を浮動小数点値として出力するプログラムを作成します。 stdinまたはコマンドラインを介して入力を取得するか、文字列を取得する関数を作成できます。 入力文字列には、印刷可能なASCII文字のみが含まれていると想定できます(したがって、単一行です)。 floatを標準出力に小数点以下4桁以上で印刷するか、関数を作成した場合に返すように選択できます。情報を伝えない小数点以下の場所は必要ありません。たとえば、の0代わりに使用でき0.0000ます。 必要に応じて、チャンクネスまたは滑らかさを選択します。プログラムが出力するものを必ず言ってください。 バイト単位の最短コードが優先されます。 例 Peanut Butter→チャンクネス:0.91666666666、滑らかさ:0.08333333333 chUnky→チャンクネス:1.0、滑らかさ:0.0 sssmmsss→チャンクネス:0.28571428571、滑らかさ:0.71428571428 999→チャンクネス:0.0、滑らかさ:1.0 AA→チャンクネス:0.0、滑らかさ:1.0 Aa→チャンクネス:1.0、滑らかさ:0.0 !→チャンクネス:0.0、滑らかさ:1.0 [空の文字列]→チャンクネス:0.0、滑らかさ:1.0 ボーナス質問:あなたはどちらを好みますか、分厚いか滑らかな文字列ですか?

5
冬のシーズンに向けて氷のようなアバター画像を作成する
冬になり、寒くなり始めます(そして、奇妙なカラフルな帽子が現れ始めます...すぐに)。テーマに合うように、アバターの写真やその他の画像をフリーズさせるコードを書きましょう! 入力 このチャレンジへの提出への入力は、画像(フリーズする画像)と数字(後述のしきい値)である必要があります。 言語でサポートされている方法(引数としてのファイルパスまたはURL、クリップボードからの取得、画像のドラッグアンドドロップなど)およびRGBで色を表現するここにリストされている形式で画像を入力できます(代わりにRGBAをサポート/要求できますが、これは必須ではありません)。 プログラムにハードコーディングすることを除き(コマンドライン引数、STDIN、入力ダイアログなど)、任意の方法で番号を入力することができます(例n=10)。画像にファイルパス/ URLを使用する場合は、この方法でも入力する必要があります。 出力 プログラムは、以下の説明に従って画像を処理し、任意の方法で出力する必要があります(ファイルに出力する、画面に表示する、クリップボードに配置するなど)。 説明 送信では、次の3つの手順で画像を処理する必要があります。nあなたのプログラムが画像とともに入力として受け取った番号を指します。 n各ピクセルのR、G、Bの値を、マンハッタンのnピクセル距離内にあるすべてのピクセルの平均R、G、Bの値に置き換えて、範囲外の座標をすべて無視することにより、入力画像に半径のぼかしを適用します。(つまり、Xの差とYの差の合計がより小さいか等しいすべてのピクセルn。) (注:便利な組み込み関数があるため、上の画像にはガウスぼかしを使用しました。そのため、画像が少し異なって見える場合があります。) 各ピクセルをピクセルの距離内のランダムなピクセルに設定しますn/2(「距離」は前のステップと同じ方法で定義されます)。 これは、画像をループし、各ピクセルをこの範囲内のランダムなピクセルに設定することで行う必要があります。そのため、一部のピクセルが完全に消えたり、一部が重複したりする場合があります。 すべての変更を同時に適用する必要があります。つまり、ピクセルの古い値(ステップ1の後、このステップの前)を使用し、ランダムピクセルに設定した後の新しい値は使用しません。 各ピクセルの「青」RGB値に1.5を乗算し、255(またはピクセルのバンドの最大値)に制限して、切り捨てます。 ルール 言語に組み込まれている画像ライブラリ/画像処理関連の機能を使用できます。ただし、説明に記載されている3つの主要なタスクのいずれかを実行する機能は使用できません。たとえば、blur関数を使用することはできませんが、getPixel関数は問題ありません。 これはcode-golfなので、バイト単位の最短コードが勝ちです!

19
最短の一意の部分文字列
入力 英数字の文字列s。 出力 内の(連続した)サブストリングとして1回だけ出現する最短のストリングs。重複するオカレンスは個別としてカウントされます。同じ長さの候補が複数ある場合は、それらをすべて発生順に出力する必要があります。このチャレンジでは、空の文字n + 1列はlengthの文字列で何度も発生しますn。 例 文字列を考えます "asdfasdfd" 空の文字列は10回出現するため、一意の出現の候補ではありません。手紙のそれぞれ"a"、"s"、"d"、と"f"彼らはどちらかの候補ではないので、少なくとも2回出現します。サブストリング"fa"と"fd"は、この順序で1回だけ出現しますが、長さ2の他のすべてのサブストリングは2回出現します。したがって、正しい出力は ["fa","fd"] ルール 関数と完全なプログラムの両方が許可されていますが、標準の抜け穴は許可されていません。出力の正確なフォーマットは、理由の範囲内で柔軟です。特に、空の文字列の出力を生成することはできませんが、エラーをスローすることはできません。最も低いバイトカウントが優先されます。 テストケース "" -> [""] "abcaa" -> ["b","c"] "rererere" -> ["ererer"] "asdfasdfd" -> ["fa","fd"] "ffffhhhhfffffhhhhhfffhhh" -> ["hffff","fffff","hhhhh","hfffh"] "asdfdfasddfdfaddsasadsasadsddsddfdsasdf" -> ["fas","fad","add","fds"] リーダーボード これが私が約束した言語別のリーダーボードです。 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。 # Language Name, N bytes N提出物のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば: # Ruby, <s>104</s> <s>101</s> 96 bytes <script src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'></script><script>site = …
29 code-golf  string 

30
2つがすべてを変える-強盗
主な警官の挑戦については、ここをクリックしてください 注意 -このチャレンジは終了しました。現在投稿されているクラックはリーダーボードでカウントされず、受け入れられた回答は変更されません。 チャレンジ 元のプログラム、その出力、および変更されたプログラムの出力を考えると、予想される出力を得るには、どの文字を変更、削除、または追加する必要があるかを調べる必要があります。 誰かのコードを解読するときは、答えにあなたの亀裂へのリンクをコメントとして残してください。 書式設定 # [<language>, <username of program owner>](<link to answer>) ## Description <description of change and how you found it> ## Code <changed code> 勝ち ほとんどのソリューションをクラックした人が勝ちます。 リーダーボード 13の亀裂: デニス 8クラック: アレックス・ヴァン・リュー 5クラック: Sp3000 isaacg 3つの亀裂: ルイス・メンドー ジミー23013 ドムヘイスティングス 2クラック: mbomb007 Sluck49 1クラック: ナンバーワン ジャクベ プラウドハスケラー …

11
いくつの塔が見えますか?
この質問は、オンラインでプレイできる番号配置パズルタワー(スカイスクレイパーとも呼ばれます)に基づいています。あなたの目標は、パズルの解決策を見つけて、手がかり(各行と列に沿って見える塔の数)を決定することです。これはコードゴルフなので、バイト数が最も少なくなります。 タワーの仕組み -タワーパズルの解決策は、ラテン方陣であるn*nすべての行と列が数字の順列を含有するグリッド1を介しn。例n=5は次のとおりです。 4 3 5 2 1 5 4 1 3 2 1 5 2 4 3 2 1 3 5 4 3 2 4 1 5 各行と列には、両端に次のような手がかりが付いています。 2 3 1 4 5 v v v v v 2 > 4 3 5 2 1 < 3 1 > …
29 code-golf  grid 

27
16ビットバイナリグリッド
符号なし16ビット整数があれば、その10進形式を変換します(つまり数)をビットの4x4 ASCIIグリッドに最上位ビット(MSB)は左上、最下位ビット(LSB)は右下に読み、次に下に読みます(英語のテキストのように)。 例 入力:4242 +---+---+---+---+ | | | | # | +---+---+---+---+ | | | | | +---+---+---+---+ | # | | | # | +---+---+---+---+ | | | # | | +---+---+---+---+ 入力:33825 +---+---+---+---+ | # | | | | +---+---+---+---+ | | # | | | +---+---+---+---+ | …

19
基本的なバイナリについてのすべて
面白いタイトルを言い訳してください。 これは、82000のCurious Propertyに触発された質問です。その中で、著者は、82000という数値が2、3、4、および5の基数が2進数であることを指摘しています。 「?(好奇心が強い人のために、10 ^ 1,000,000までの値をチェックしましたが、これまでのところ答えはノーです。) これは私に考えさせられました:数を与えられて、それはどんなベースでバイナリですか? 私たちの好奇心8盛な数字82000は、実際には6つのベースのバイナリです。 Base 2 = 10100000001010000 Base 3 = 11011111001 Base 4 = 110001100 Base 5 = 10111000 Base 81999 = 11 Base 82000 = 10 すべての数値が連続したバイナリベースを持つわけではありません。番号83521を検討してください。2、17、289、83520、83521の基数のバイナリです。 あなたの課題は、どの基数がバイナリであるかを判断して表示することです。 ルール 数値は、そのベース内の表現がゼロと1のみで構成されている場合、そのベース内の「バイナリ」と見なされます。 110110はバイナリ値ですが、12345そうでA380Fはありませんが、間違いなく違います。 番号は標準入力で提供されます。2から2 ^ 32-1までの整数値で、10進形式で提供されます。 昇順で、数値が2進数である1よりも大きい各ベースを表示します。各ベースは独自の行にある必要があります。そのベースにバイナリ値を含める場合(以下のボーナススコアリングを参照)、ベースとバイナリ値をスペースで区切ります。標準出力への出力のみが判定され、標準エラーおよびその他のソースは無視されます。 得点 スコアは、プログラムのバイト単位のサイズです。スコアが低いほど優れています。 ボーナス: プログラムが検出されたベースのバイナリ値も出力する場合、スコアに0.75を掛けます。 表示されるバイナリ値には、余分な句読点、余分なゼロ、小数点、ゼロ、1はありません。 例 入力: 82000 出力(ボーナスを受け取る): …

12
単語検索パズル
単語検索パズルとしての長方形のテキストと検索文字列を指定して、テキストに検索文字列が含まれているかどうかを判断します。検索文字列が表示される場合があります。 水平、垂直、または斜めに 前方または後方 関数またはプログラムを作成し、関数引数ARGVまたはSTDINを介して入力として2つの文字列を使用できます。出力は、関数から返されるか、STDOUTに書き込まれる可能性のある、真実または偽の結果でなければなりません。 テキストに任意の印刷可能なASCII文字(16進コード20〜7E)と改行文字が含まれると想定します。文字は大文字と小文字が区別されます。入力テキストは長方形、つまりすべての行が同じ長さであると想定できます。入力が末尾の改行で終了するかどうか(送信で問題になる場合)があります。 これはコードゴルフで、最短の回答(バイト単位)が勝ちです。 例 単語検索に関するウィキペディアの記事のこのグリッドを最初の入力として使用します。 WVERTICALL ROOAFFLSAB ACRILIATOA NDODKONWDC DRKESOODDK OEEPZEGLIW MSIIHOAERA ALRKRRIRER KODIDEDRCD HELWSLEUTH 次の検索文字列は、それぞれ真実または偽の結果をもたらすはずです。 Truthy: RANDOM, VERTICAL, HORIZONTAL, WORDSEARCH, WIKIPEDIA, TAIL Falsy: WordSearch, CODEGOLF, UNICORN または、この入力テキストを使用して Lorem ipsum dolor sit amet consectetu r adipisicing elit sed do eiusmod tem por incididunt ut labore et dolore …

6
非表示のステレオグラムメッセージ
テキストの段落、空の行、非表示のメッセージを含む入力文字列に従ってテキストステレオグラムを生成する必要があります。結果は1組の段落として表示されます。1つは異なる間隔であり、立体視で見たときに効果が上がる(説明はここにあります)。 例 入力: I invented vegetarianism. It is a diet involving no meat, just vegetables. It is also common in cows - they are awesome. vegetarianism. is awesome. 出力: I invented I invented vegetarianism. vegetarianism. It is a diet It is a diet involving no involving no meat, just meat, …
29 code-golf 

4
メタ正規表現ゴルフ
このxkcdの精神で リストの任意のペアで正規表現ゴルフをプレイするプログラムを作成します。プログラムは、少なくとも正規表現を短くしようとする必要/^(item1|item2|item3|item4)$/があります。出力などのプログラムは許可されません。 スコアリングは、最短の正規表現を生成する機能に基づいています。テストリストは、ここにある米国大統領候補の成功例と失敗例です(@Peterに感謝)。もちろん、このプログラムはすべてのばらばらのリストに対して機能する必要があるため、単純に社長に答えを返すことは重要ではありません。

23
回転しても安全な数字を印刷する
バックグラウンド ボードゲームのメーカーで働いており、ゲームのために0からnまでの数字が刻まれた木製のタイルを作る必要があります。ただし、これ以上苦労しないと、一部のタイルは区別できなく6なり9ます。これを回避するには、曖昧さをなくすためのドットを他の(およびそれらとのみ)混同する可能性のある数字を装備する必要があります。たとえば、9.またはなどのタイルがあります6089.。 残念ながら、これにはプログラム可能なすべての文字を手作業でエンコードしなければならない退屈なプロセスを必要とするインターフェイスが壊れている古いプログラム可能な木彫りデバイスを使用する必要があります。幸いなことに、デバイスはすべての既存のプログラミング言語を理解します。したがって、このようなタイルを印刷する最短のプログラムを探しています。 実際のタスク 次の最短プログラムを作成します。 入力として正の整数nを取ります。入力の読み方はあなた次第です。 出力し0からの数字のそれぞれのn(0およびnは正確に一度お好みの順番で含まれる)、(改行を含む)単一の空白文字で区切られています。数字は先行ゼロなしで印刷されます。 数字がnより大きい場合でも、π(180°)回転すると、別の有効な数字になるすべての数字にドット(。)を追加します。書体の0と8は回転対称で、9は回転6です。2と5は回転時に区別されます。1は回転対称ではありません。先行ゼロのある数字は無効です。 例 次の各番号は、この方法で正確に印刷する必要があります。 2 4 5 6. 8 9. 16 60 66. 68. 69 906 909. 8088. 9806. 9886 9889.
29 code-golf  number 

3
MOS 6502 CPUをエミュレートする
これは、ここにもあるIntel 8086チャレンジに触発されたものですが、6502チャレンジも興味深いと思いました。 チャレンジ これは結果を見るのに楽しいものになると思いました。これは明らかに、スペクトルのより高度な側面に向かっています。課題は、独自の6502 CPUエミュレーターを作成することです。これには、もちろん、その命令セットとエンコード形式の理解が含まれます。リソースはこの下部にリンクされています。6502は、エミュレートするのが最も簡単な実世界のプロセッサーの1つです。この挑戦の目的のために、あなたがしたくない場合はサイクルのタイミングを心配する必要はありませんが、それは常にプラスです! 他の人のコードをコピーしないでください!! もちろん、他のエミュレータを覗いて理解を助けることはできますが、コピーと貼り付けはできません!:) コードが機能したら、必要に応じていつでも余分な距離を移動して、Apple IIエミュレーター、またはNES、C64、VIC-20、または他の何十億もの古い6502ベースのシステムにいつでも戻すことができます。 エミュレーターをテストする ここにソースコードを見つけた6502テストスイートをコンパイルしました:http : //code.google.com/p/hmc-6502/source/browse/trunk/emu/testvectors/AllSuiteA.asm コンパイル済みバージョンは、http://rubbermallet.org/AllSuiteA.zipからダウンロードできます。 エミュレータのメモリスペースに48 KBのバイナリを$ 4000でロードすると、16 KBの読み取り/書き込みRAMがその下に残ります。テストの実行が完了すると、CPUが合格した場合、アドレス$ 0210の値は$ FFになります。プログラムカウンター(PC)がアドレス$ 45C0に達すると、テストが終了したことがわかります。 他のテストもここで利用できます:http : //visual6502.org/wiki/index.php?title=6502TestPrograms よりインタラクティブな何かをする CPUが動作したら、おそらくテスト出力を見つめるよりももっと楽しいことをしたいと思うでしょう!6502用にEnhanced BASICのROMイメージをコンパイルしました。16KBなので、エミュレートメモリスペースの$ C000にロードし、仮想6502をリセットして実行を開始する必要があります。 ehbasic.binを含むこのZIPをダウンロードします:http ://rubbermallet.org/ehbasic.zip EhBASICが入出力を処理する方法は非常に簡単です。コンソールに文字を書き込みたい場合、メモリ位置$ F001にバイトを書き込みます。そのため、エミュレータが6502がその場所に書き込もうとすると、printf( "%c"、value)を使用してその文字値をコンソールに出力するだけです。またはあなたが望む他の方法。(このチャレンジはもちろんCに限定されません) コンソールから入力された文字をポーリングするとき、かなり似ています。メモリ位置$ F004から読み取りを続けます。キーボードの次のASCII文字値が読み取られるのを待っているはずです。読み込む入力がもうない場合は、ゼロの値を返す必要があります。 EhBASICは、その場所の値がゼロ以外になるまでポーリングします。これにより、バイトが有効なキーボード入力であることがわかります。これが、読み取る入力がもうない場合、エミュレータがゼロを返す理由です。EhBASICは、入力を探しているときに次の有効なキーまでスピンします。 最後のキー値を読み取った後、その値をゼロにクリアしないと、キーを押しているかのように値が繰り返されるため、正しく行うように注意してください! エミュレータが正常に動作する場合、これはROMイメージを実行するときにコンソールに印刷されて表示されます。 6502 EhBASIC [C]old/[W]arm ? Cキーを押してからEnterキーを押すと、次のように表示されます Memory size ? 31999 Bytes free Enhanced …

5
3文字で「Godel-Escher-Bachキューブ」を形成できるかどうかを確認します
この質問は、本「Godel、Escher、Bach」の表紙から着想を得ています。 ここでの課題は、指定された3つの文字が3辺から読み取ることができる3D彫刻を生成できるかどうかを示す関数を記述することです。 この演習で使用できる文字は、26個の5px * 5pxビットマップのみです。 またはバイナリ(AからZ): 01110 11110 01111 11110 11111 11111 11111 10001 11111 11111 10001 10000 10001 10001 01110 11110 01110 11110 01111 11111 10001 10001 10001 10001 10001 11111 10001 10001 10000 10001 10000 10000 10000 10001 00100 00100 10010 10000 11011 11001 10001 10001 10001 10001 …
29 code-golf  3d 

8
あなたは一番大きな部屋にいますか?
前書き 最近、Pretty Good Software Companyでの求人を受け入れました。あなたはオフィスの大きさに満足していますが、最大のオフィスはありますか?立ち寄ったときに同僚のオフィスをただ見回すだけではわかりにくい。これを理解する唯一の方法は、建物の設計図を調べることです... あなたのタスク 建物のフロアプランを取り、オフィスが最大かどうかを示すプログラム、スクリプト、または関数を作成します。建物はn × nの正方形であるため、フロアプランは読みやすくなっています。 入力は、n + 1で \n区切られた行で構成されます。最初の行には番号nが付きます。次のn行は、建物のフロアプランです。簡単な入力例: 6 ...... . . . .X . . . . . . . . ...... フロアプランのルールは次のとおりです。 .(ASCII 46)壁を表すために使用されます。(スペース[ASCII 32])は、オープンスペースを表すために使用されます。 あなたはX(ASCII 88)で表されます。あなたはあなたのオフィスにいます。 フロアプランはn行で、各行にn文字が含まれます。 建物は四方を壁で完全に囲まれています。これは、入力の2行目(フロアプランの最初の行)と入力の最後の行がすべて.sであることを意味します。また、すべてのフロアプランラインの最初と最後の文字が.sであることを意味します。 オフィスのサイズは、隣接するスペースの合計として定義されます(壁を通過することなく、N、S、E、Wの4方向に移動することにより連続します)。 オフィスのサイズの目的で、あなたを表すXは(オープンスペース)としてカウントされます 4 <= n <= 80 あなたのオフィスが他のすべてのオフィスよりも厳密に大きいかどうかを出力する必要があります。出力は、選択したプログラミング言語でTrueまたはFalseを明確に示し、ゼロ、null、および空を示すFalseの標準規則に準拠するものであれば何でもかまいません。Trueは、オフィスが厳密に最大であることを意味します。 上記の入力のサンプル出力: 1 オフィスは8平方フィートで、他のオフィスは4平方フィートしかないためです。 I / Oガイドライン …

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