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

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

12
ASCII Maya番号
入力として正の整数を指定すると、Maya数字でその整数の表現を出力するプログラムまたは関数を記述します。 マヤの数字 Mayaの数字は、3つのシンボルのみを使用した仮想システム(基数20)です。 < >以下のためにゼロ(正しい記号を容易ASCIIを使用して表すことができないシェルのいくつかの並べ替えです)。 .以下のための一つ ----以下のためのファイブ 数値は20の累乗で垂直に書き込まれ、0〜19の数値は5と1のスタックとして書き込まれます。詳細については、Wikipediaの記事を参照してください。 例として、0から25までの数字をコンマで区切って示します。 . .. ... .... . .. ... .... ---- ---- ---- ---- ---- . . . . . . . .. ... .... ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- < >, . , .. ,... ,....,----,----,----,----,----,----,----,----,----,----,----,----,----,----,----,< >, …

2
Lossy ASCIIアート圧縮
バックグラウンド PICASCIIは、画像をASCIIアートに変換するきちんとしたツールです。 次の10個のASCII文字を使用して、さまざまな明るさを実現します。 @#+';:,.` これらの文字(文字要素)の明るさは1(アットマーク)から10(スペース)までです。 以下に、正しいフォントで表示された小さなコード、ウェールズの旗、オーバーハンドフラクタル、大きなマス、小さなゴルフの変換結果を示します。 このフィドルの画像を表示して、Googleドライブからダウンロードできます。 仕事 PICASCIIの最終結果は視覚的には満足のいくものですが、合計5つの画像の重量は153,559バイトです。品質の一部を犠牲にする場合、これらの画像をどれだけ圧縮できますか? あなたの仕事は、上記のようなASCIIアートイメージと最低品質を入力として受け入れ、完全なプログラムまたは単一の文字列を返す関数の形式で、イメージの非可逆圧縮を印刷するプログラムを作成することです。品質要件。 これは、別個の解凍プログラムを作成できないことを意味します。各圧縮イメージに組み込まれている必要があります。 元の画像は、1〜10の明るさの文字で構成され、同じ長さの行に改行で区切られます。圧縮されたイメージは同じサイズで、同じ文字セットを使用する必要があります。 n個の charxelsで構成される非圧縮画像の場合、画像の圧縮バージョンの品質は次のように定義されます。 ここで、cは私の輝度であるI 番目の圧縮された画像の出力のcharxel及びU Iの輝度I 番目の非圧縮の画像のcharxel。 得点 コードは、入力として上記の5つの画像を使用して実行され、各画像の最小品質設定は0.50、0.60、0.70、0.80、0.90です。 スコアは、すべての圧縮画像のサイズの幾何平均です。つまり、25個すべての圧縮画像の長さの積の25番目のルートです。 最低スコアが勝ちます! 追加のルール コードは、スコアリングに使用される画像だけでなく、任意の画像に対して機能する必要があります。 テストケースに向けてコードを最適化することが期待されますが、任意の画像を圧縮しようとさえしないプログラムは、私から賛成を得ることはありません。 コンプレッサーは、組み込みのバイトストリームコンプレッサー(gzipなど)を使用する場合がありますが、圧縮イメージ用に自分で実装する必要があります。 通常、バイトストリームデコンプレッサ(ベース変換、ランレングスデコードなど)で使用されるブリットインが許可されます。 圧縮プログラムと圧縮イメージは同じ言語である必要はありません。 ただし、すべての圧縮画像に対して単一の言語を選択する必要があります。 各圧縮画像には、標準コードのゴルフ規則が適用されます。 検証 CJamスクリプトを作成して、すべての品質要件を簡単に検証し、提出のスコアを計算しました。 Javaインタープリターは、こちらまたはこちらからダウンロードできます。 e# URLs of the uncompressed images. e# "%s" will get replaced by 1, 2, 3, 4, 5. …

5
今日のランダムアスキーアート#5:ダイヤモンドのタイル
マッシュアップタイム! これは、私のランダムゴルフオブザデイとオプティマイザーのASCIIアートオブザデイシリーズの両方の第5回です。このチャレンジでの投稿は、両方のリーダーボードにカウントされます(リンクされた投稿を見つけることができます)。もちろん、これを他のコードゴルフチャレンジと同様に扱い、いずれかのシリーズについてまったく心配することなく答えることができます。 穴5:ダイヤモンドのタイル 通常の六角形は、常に次のようにダイヤモンドでタイル化できます。 これらのタイルのASCIIアート表現を使用します。辺の長さが2の六角形には、このようなタイルが20個あります。 ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ /\_\_\ /\_\_\ /\_\_\ /\_\_\ /_/\_\ /_/\_\ /\_\_\ /_/\_\ /_/\_\ /_/\_\ /\/\_\_\ /\/_/\_\ /\/_/_/\ /\/_/\_\ /\_\/\_\ /\_\/_/\ /\/_/_/\ /\_\/\_\ /\_\/_/\ /_/\/\_\ \/\/_/_/ \/\_\/_/ \/\_\_\/ \/_/\/_/ \/\_\/_/ \/\_\_\/ \/_/\_\/ \/_/\/_/ \/_/\_\/ \_\/\/_/ \/_/_/ \/_/_/ \/_/_/ \_\/_/ \/_/_/ …

5
中国語チェッカーボード
中国のチェッカーのゲームは、6つの尖った星の形をしたスペースのあるボードでプレイされます。 ウィキペディアからの画像 .空のスポットとGYORPB6色の開始位置の文字を使用して、このボードのASCIIアート表現を作成できます。 G G G G G G G G G G B B B B . . . . . Y Y Y Y B B B . . . . . . Y Y Y B B . . . . . . . Y Y B …

7
ベースプルーフ式の出力
バックグラウンド いくつかの可能な未来では、世界は彼らの数値システムを10進数(基数10またはb10)から他の基数(2 b2進数b8、8進数、16進数b16、さらには単項b1に変換します。したがって、この世界を変える可能性のあるイベントに備えて、すべてのプログラムをベースプルーフすることにします。これは、単数0のsと1s のみを演算子と組み合わせて使用​​して、既存の数値定数を置き換えることで実行できます。 ただし、問題が1つだけあります。変更するプログラムが大量にあり、各数値を手動で式に変換するには数週間かかります。したがって、プログラム(または関数)を作成して、各式を置き換える式を決定します。 入力 入力は正の整数になります。コードは 1000までの整数を処理できる必要があります。 (コードが小数および/または負の入力をサポートしている場合は、以下のスコアリングを参照してください。) 出力 コードは、少なくとも1つの言語で入力に評価される式を出力する必要があります。これはどの言語でもかまいません。プログラムまたは関数が記述されているものと同じである必要はありません。また、この式は完全なプログラムまたは関数である必要はありません。 明確にするために、出力には次の操作のいずれかが含まれる場合があります。 インクリメント/デクリメント 加算/合計 減算/否定 乗算/倍数(数値が直接関与しない場合のみ2!) 除算/モジュロ 指数/対数 square / sqrt(これも数値に直接関係しない場合のみ2!) ビット演算(bOR、bAND、bNOT、bXOR、ビットシフト) 変数の設定/取得 スタック操作 出力で、または同様の機能を使用することはできませんeval()。また、上記以外のアクションを実行する関数を出力で使用することはできません。 ああ、もう一つ:私たちは出力が可能な限り多くの拠点として有効であることにしたいから、それが含まれていてもよいだけの数の定数である0と1。10言語がa 1およびa として解釈しない限り、(10)などの数字は許可されません0。などCJamのような文字使用され、いずれかの許可されていない番号を格納する文字列を使用してA- K(表します10- 20)。 テストケース (すべての出力はJavaScriptですが、他の言語でも機能する場合があります。) 入力1: 2 可能な出力1: 1+1 入力2: 13 可能な出力2: (a=1+1+1)*a+a+1 入力3: 60 可能な出力3: (b=(a=1+1+1+1)*a)*a-a 入力4: 777 可能な出力4: (c=(b=((a=1+1+1+1)*a-a+1)*a)*a+b)+c+c-a+1 入力5: 1000 …

9
Collat​​z Cousinsの計算
次のように、正の整数nに対して関数f(n)を定義します。 n / 2、nが偶数の場合 3 * n + 1、nが奇数の場合 この関数を0より大きいnに繰り返し適用すると、結果は常に1に収束するように見えます(まだ誰も証明できていませんが)。このプロパティはCollat​​z予想と呼ばれます。 整数の停止時間を、1に達するまでCollat​​z関数fを通過する必要がある回数として定義します。最初の15個の整数の停止時間は次のとおりです。 1 0 2 1 3 7 4 2 5 5 6 8 7 16 8 3 9 19 10 6 11 14 12 9 13 9 14 17 15 17 Collat​​z cousinsと同じ停止時間で数字のセットを呼び出しましょう。たとえば、5と32はCollat​​zのいとこであり、停止時間は5です。 あなたのタスク:非負の整数を取り、その整数に等しい停止時間を持つCollat​​zのいとこのセットを生成するプログラムまたは関数を作成します。 入力 STDIN、ARGV、または関数引数を介して指定された非負の整数S。 出力 停止時間がSであるすべての数値のリスト。昇順でソートされています。リストはプログラムによって出力されるか、関数によって返されるか出力される場合があります。出力形式は柔軟性があります。スペース区切り、改行区切り、または言語の標準リスト形式は、数字が簡単に区別できる限りは問題ありません。 必要条件 提出は、S≤30に対して正しい結果を提供する必要があります。数時間または数日ではなく、数秒または数分で完了する必要があります。 …

16
ビットストリング物理学
バックグラウンド はい、ビットストリング物理学は本物です。アイデアは、確率論的ルール...または何かの下で進化するビット列のみを使用して、物理学の新しい理論を構築することです。それについていくつかの論文を読んだにもかかわらず、私はまだかなり混乱しています。ただし、ビットストリングユニバースは、素敵な小さなコードゴルフを実現します。 プログラムユニバース ビットストリング物理学は、いわゆるプログラムユニバースで行われます。宇宙の進化の各ステップには、2要素のリストで始まる、L長さのあるビット文字列の有限リストがあります。1つのタイムステップは、次のように処理されます(Pythonのような擬似コード)。k[10,11]k = 2 A := random element of L B := random element of L if A == B: for each C in L: append a random bit to C else: append the bitwise XOR of A and B to L すべてのランダムな選択は、一様にランダムであり、互いに独立しています。 例 4ステップの進化の例は次のようになります。最初のリストから始めますL。 10 11 同じ行であるA …

3
正の整数を選択的に殺す
前書き 算術Gaolは、正の整数を無効にする特別な機能です。ただし、最近、正の整数がエスケープしようとしています。したがって、監視員は、他の整数にメッセージを送信するために、いくつかの正の整数を削除することを決定しました。彼らは、ソフトウェアエンジニアを雇って、最大の効果を得るためにどの整数を排除するかを決定するプログラムを作成しました。 入力の説明 入力は、STDIN、コマンドライン引数、またはユーザー入力関数(などraw_input)を介して与えられます。関数の引数や事前初期化された変数として使用することはできません(たとえば、このプログラムは変数への入力を想定していますx)。 入力の最初の行には、単一の正の整数nが含まれます8 >= n >= 3。その後に、セットの文字nを含む行が続きます。入力例を次に示します。n[1,2,3,4,5,6,7,8,9] 5 22332 46351 65455 24463 65652 出力の説明 監視員は、次の条件が満たされるように数字を削除したいと考えています。 結果のグリッドの各行と列には、数字が2回表示されません。 排除された2つの数字が水平または垂直に隣接することはありません。 生き残った番号は、直交する連続したグループを形成する必要があります-生き残った番号から、水平方向と垂直方向にのみ移動し、排除された番号を決して越えない他の生き残った番号に移動できます。 入力を出力し(最初の行を差し引いた)、除去された数値をに置き換え#ます。 複数のソリューションが存在する場合があります。その場合、任意のソリューションを出力できます。 解決策がない場合もあります。その場合、文字列を出力しますno answer。 入力例の可能な出力は次のとおりです。 #2#3# 46351 6#4#5 24#63 #56#2 入力と出力の例 各入力には複数の出力があるため、これらの出力は単なる例です。 入力: 5 46551 51565 32654 14423 43244 出力: 46#51 #156# 326#4 1#423 #324# 入力: 7 7183625 1681563 5238564 …
21 code-golf  grid 

4
評判の幸運な数に達する
サイトに登録したばかりの新しいコードゴルファー、ジョー。彼は1つの評判を持っていますが、評判の彼のすべての幸運な数に正確に到達することを決定しました。ジョーは、自分(または他の人)の最小限のアクションで目標を達成するのに役立つ、より高い力を信じています。新しいユーザーとして、彼は否定的な評判も可能だと考えています。 ジョーが期待するアクションの数を計算するのに役立つプログラムまたは関数を作成する必要があります。 詳細 アクションは、以下の量だけレピュテーションを変更できます(スタック交換ルールに関係なく、すべてのステップですべてのアクションが利用可能です)。 answer accepted: +15 answer voted up: +10 question voted up: +5 accepts answer: +2 votes down an answer: −1 question voted down: −2 その他の特別な評判の変更は無視されます。 ラッキーナンバーは負の場合があり、任意の順序で到達できます。 あなたの解決策は、私のコンピューターで1分以内にすべてのサンプルテストケースを解決する必要があります(近くのケースのみをテストします。平均以下のPCを持っています)。 入力 あなたの言語の一般的な形式の整数のリストとしてのジョーのラッキーナンバー。 出力 単一の整数として必要な最小アクションの数。 出力はstdoutに出力されるか、整数として返されます。 例 入力=>出力(評価状態の例) 1 => 0 (1) 3 2 1 => 2 (1 -> 3 -> …

6
中国の剰余定理
中国剰余定理は、我々は常に異なるプライムモジュラスの下に必要な残りを生産数を見つけることができることを教えてくれる。あなたの目標は、そのような数を多項式時間で出力するコードを書くことです。最短のコードが優先されます。 たとえば、これらの制約が与えられているとしましょう(%modを表します): n % 7 == 2 n % 5 == 4 n % 11 == 0 1つのソリューションはn=44です。最初の制約が満たされているのは44 = 6*7 + 2、で44割った2ときに余りがある7ため44 % 7 == 2です。他の2つの制約も満たされます。など、他のソリューションが存在するn=814とn=-341。 入力 空でないペアのリスト(p_i,a_i)。各モジュラスp_iは異なる素数で、各ターゲットa_iは範囲内の自然数です0 <= a_i < p_i。便利な形式で入力できます。実際にペアのリストである必要はありません。入力がソートされているとは限りません。 出力 整数nようにn % p_i == a_i各インデックスのi。このような最小の値である必要はなく、負の値でもかまいません。 多項式時間制限 ちょうどしようと安価なソリューションを防ぐためにn=0、n=1、n=2、というように、あなたのコードは、多項式時間で実行する必要があります入力の長さ。m入力の数値にはlength Θ(log m)があるため、それm自体の長さは多項式ではないことに注意してください。つまりm、操作m時間までカウントしたり操作したりすることはできませんが、値の算術演算を計算することはできます。 これを回避するために単項式のような非効率的な入力形式を使用することはできません。 その他の禁止 次を実行するためのビルトインは許可されていません。中国剰余定理の実装、方程式の解、または因子数。 組み込みを使用してmodを見つけ、モジュラー加算、減算、乗算、および指数(自然数指数を使用)を実行できます。モジュラー逆行列、除算、順序検索など、他の組み込みのモジュラー操作を使用することはできません。 テストケース これらは、最小の非負のソリューションを提供します。あなたの答えは異なる場合があります。出力が各制約を満たしていることを直接確認する方が良いでしょう。 [(5, 3)] …

30
3x3グリッドのすべての色を印刷する
3x3のグリッドがあります。各セルは黒または白に色を付けることができます。これらの512色すべてを表示します。最少バイトが勝ちます。 視覚的に分離され、間隔が規則的に見える限り、どのフォーメーションでもグリッドを表示できます。ASCIIアートまたは画像を使用できます。黒と白には、任意の2つの異なる可視シンボルまたは色を使用できます。結果が視覚的に正しい限り、空白は問題ありません。 出力例: ... ... ... ... ... ..X ... ... .X. ... ... .XX ... ... X.. ... ... X.X ... ... XX. ... ... XXX ... ..X ... ... ..X ..X ... ..X .X. ... ..X .XX ... ..X X.. ... ..X X.X ... ..X XX. ... ..X …

2
素多項式
多項式が与えられたら、それが素数かどうかを判断します。 多項式はax^n + bx^(n-1) + ... + dx^3 + ex^2 + fx + g、各項が定数(係数)にの非負の整数乗を掛けたものですx。ゼロ以外の係数を持つ最高のパワーは、次数と呼ばれます。この課題では、少なくとも次数1の多項式のみを考慮します。つまり、各多項式にはが含まれますx。また、整数係数を持つ多項式のみを使用します。 多項式は乗算できます。たとえば、(x+3)(2x^2-2x+3)等しい2x^3+4x^2-3x+9。したがって、2x^3+4x^2-3x+9に因数分解することができるx+3と2x^2-2x+3、それは複合体であるので、。 他の多項式は因数分解できません。たとえば、2x^2-2x+3は2つの多項式の積ではありません(定数多項式または非整数係数を持つ多項式は無視されます)。したがって、それは素数(既約とも呼ばれます)です。 ルール 入力と出力は、標準的な方法で行うことができます。 入力は、などの文字列、など2x^2-2x+3の係数のリスト{2,-2,3}、または同様の手段です。 出力は、素数の場合は真偽値、合成の場合は偽値です。すべての素数に同じ真理値を、すべての合成多項式に同じ偽値を生成する必要があります。 入力は少なくとも1次で最大10次です。 (整数または式の)因数分解または方程式の解法に組み込みツールを使用することはできません。 例 真-プライム x+3 -2x x^2+x+1 x^3-3x-1 -2x^6-3x^4+2 3x^9-8x^8-3x^7+2x^3-10 False-複合 x^2 x^2+2x+1 x^4+2x^3+3x^2+2x+1 -3x^7+5x^6-2x x^9-8x^8+7x^7+19x^6-10x^5-35x^4-14x^3+36x^2+16x-12
21 code-golf  math  primes 

3
どうやって作りますか?
21個の項目がありMinecraftのあなたができることを作るだけ使用して木材木材から作られたとの項目は: 斧 ボート ボウル ボタン チェスト テーブルクラフト ドア フェンス ゲート 鍬 ラダー つるはしの 厚板の 圧力プレートの シャベル 記号の スラブ 階段が 付く 剣 トラップドアを このリストでは、6種類の木製の厚板/スラブ/ドア/などを想定しています。すべて同じアイテムとしてカウントされます。それを考える別の方法は、1種類の木材にしかアクセスできないと仮定することです。 これら21のアイテムのそれぞれには異なるクラフトレシピがあります。これらのレシピはそれぞれ、キャラクターの2×2または3×3グリッドとして表されます.WPS。.空クラフトスロットであるWためである木材、Pのためのものである木の板、及びSためのものであるスティック。これらの特定のアイテムに他の文字は必要ありません。 たとえば、これはチェストのレシピです: PPP P.P PPP チャレンジ 21個のアイテムのうちの1つを上記のとおりに入力し、そのアイテムの有効な作成レシピを印刷するプログラムを作成します。 クラフティングレシピは翻訳不変であるため、入力がの場合、fenceこれらは両方とも有効です。 PSP PSP ... ... PSP PSP レシピが2×2グリッドに収まる場合、2×2または3×3グリッドに出力できます。例stick: .P .P ... .P. .P. レシピは水平に(対称の垂直線の周りに)ミラーリングすることもできますが、これはx、、および階段のみに違いがあります。例hoe: .PP .S. .S. PP. .S. .S. …

11
ハウスドルフ距離の計算
前書き ハウスドルフ距離は、距離空間の2つのサブセットの間の差を測定します。直観的には、距離空間は組み込みの距離関数を備えた単なるセットです。この課題では、通常の距離の自然数を使用しますd(a, b) := abs(a - b)。二つの非空有限集合間のハウスドルフ距離AとBによって与えられます。 max(max(min(d(a, b) for b in B) for a in A), max(min(d(a, b) for a in A) for b in B)) Pythonのような表記法で。ハウスドルフ距離がの要素見つけることによって計算することができるAそのための最も近い要素までの距離がB最大との要素であるBの最も近い要素にする距離A最大であり、そして、これらの距離の最大値を取っています。ハウスドルフ距離が言い換えれば、d後のすべての要素は、A距離内にあるdいくつかの要素のB、およびその逆。 入力 入力は整数の単一リストです。それだけの要素が含まれ0,1,2,3、リストの指定されたインデックスは、どちらの要素であるかどうかを意味し、AでもB、のみA、のみB、または両方AとB。たとえば、0から始まるインデックスを使用する場合、入力[0,1,1,0,2,3]はA = {1,2,5}andを意味しB = {4,5}ます(メトリックは翻訳不変なので、違いはありません)。 出力 出力は、Aとの間のハウスドルフ距離Bです。上記の例では、です3。いずれかのセットが空の場合、距離は定義されていないため、を返し-1ます。 ルール 完全なプログラムまたは関数を作成できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 テストケース [] -> -1 [0] -> -1 [0,1,0] -> -1 [2,0,0,2] -> …

4
Pure Sourcery-0から9の数字を出力するプログラムの形成
以下は、0〜9の数字のピクセル化された5 x 7フォントです。 .███. █...█ █...█ █...█ █...█ █...█ .███. ..█.. ███.. ..█.. ..█.. ..█.. ..█.. █████ .███. █...█ ....█ ...█. ..█.. .█... █████ .███. █...█ ....█ ..██. ....█ █...█ .███. █..█. █..█. █..█. █████ ...█. ...█. ...█. █████ █.... █.... .███. ....█ █...█ .███. .███. █...█ █.... ████. █...█ …

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