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

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

4
有限グループのサブグループの数を見つける
定義 グループの定義が既にわかっている場合は、この部分をスキップできます。有限グループ、およびサブグループの。 グループ 抽象代数では、グループはタプル(G、∗)です。ここで、Gは集合であり、∗は関数G×G→Gです。次のようなです。 閉包:Gのすべてのx、yについて、x ∗ yはGにもあります(∗が関数G×G→Gであるという事実によって暗示されます)。 連想:すべてのためのX、Y、ZにおけるG、(X * Y)* Z = X *(Y * Z) 。 同一性:要素が存在するEにおけるGのようにすべてのためのxにおけるG、X * E = X = E * X。 逆:毎XにおけるG、要素が存在するYはでGように、X * Y = E = Y * X、E前の箇条書きに記載された同一要素です。 有限グループ 有限群の基である(G、*)G、有限であるすなわち、有限個の要素を有します。 サブグループ サブグループ (H *)グループの(G、*)があるようであり、Hは、の部分集合であるG(必ずしも適切ではないサブセット)および(H *)、グループ(すなわち、満足4つの基準を超える)です。 例 検討二面体群のD 3 (G、*)G = {1、A、B、C、D、E}及び*は以下に定義されているが(このようなテーブルが呼び出されケーリーテーブル): ∗ | …

5
すべてのBrain-Flakスニペットを生成する
この質問は、Brain-Flakの最初の誕生日を祝うために設計されたいくつかのBrain-flak Birthdayチャレンジの2番目です!Brain-Flakの誕生日の詳細については、こちらをご覧ください。 チャレンジ この課題では、括弧のリストから完全に一致するすべての文字列を生成します。完全に一致する文字列のDJMcMayhemの定義を借用するには: この課題のために、「括弧」は次の文字のいずれかです()[]{}<>。 次のように、開始ブラケットと終了ブラケットが正しい順序であり、中に文字がない場合、一対のブラケットは「一致」とみなされます。 () []{} または、その中のすべてのサブ要素も一致する場合。 [()()()()] {<[]>} (()()) サブエレメントは、いくつかのレイヤーの深さにネストすることもできます。 [(){<><>[()]}<>()] <[{((()))}]> ブラケットの各ペアに正しい順序で正しい開始ブラケットと終了ブラケットがある場合にのみ、文字列は「完全一致」と見なされます。 入力 プログラムまたは関数は、便利で一貫した形式の4つの非負数のリストを受け取ります。これには、整数のリスト、数字で区切られていない文字列、または個別の引数が含まれます(ただし、これらに限定されません)。これらの4つの数字は、各タイプのブラケットの一致したペアの数を表します。たとえば、次[1,2,3,4]を表します。 1ペア () 2組の {} 3組[]と 4ペア <> 一貫性がある限り、各入力に対応するブラケットのペアを選択できます。 出力 この括弧のリストから重複なく形成できる、完全に一致したすべての文字列を出力する必要があります。出力は、括弧で区切られていない文字列をSTDOUTに出力したり、文字列のリストを関数からの戻り値として出力したりするなど、妥当な形式で出力できます。 アルゴリズムは任意の入力に対して機能する必要がありますが、メモリ、時間、整数サイズの制限について心配する必要はありません(たとえば、答えがCの場合、入力として2 33を取得しません)。 これはcode-golfであるため、バイト単位の最短回答が優先されます。 入力と出力の例 これらの例では、上記と同じ入力順序を使用します。 各例では、最初の行が入力され、次の行が出力になります Example 0: [0,0,0,0] Example 1: [1,0,0,0] () Example 2: [0,2,0,0] {}{} {{}} Example 3: [0,0,1,1] []<> …

9
キーボードレイアウトの課題
一般的に使用されるキーボードレイアウトは、以下に示すQWERTYレイアウトです。 しかし、他のキーボードレイアウトもあります。 DVORAK コレマック 職人 あなたのタスク コードは、キーボードレイアウトの名前と、文字起こしする文字列の2つの入力を受け取ります。あなたの目標は、QWERTY入力を、最初のパラメーターとして指定されたキーボードレイアウトで入力しているかのように変換することです。 ルール 入力形式は無料です。文字列、配列などを使用できます。さらに、3つの異なる値を使用してレイアウトを表現し、バイト数を減らすことができますが、それぞれ10バイト以下で表現できる必要があります。 背景が白いキーのみを処理する必要があります。具体的には、印刷可能なASCII文字をQWERTYアルファベットから他のアルファベットのいずれかに転置する必要があります。 QWERTY: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ DVORAK: !_#$%&-()*}w[vz0123456789SsW]VZ@AXJE>UIDCHTNMBRL"POYGK<QF:/\=^{`axje.uidchtnmbrl'poygk,qf;?|+~ COLEMAK: !"#$%&'()*+,-./0123456789Oo<=>?@ABCSFTDHUNEIMKY:QPRGLVWXJZ[\]^_`abcsftdhuneimky;qprglvwxjz{|}~ WORKMAN: !"#$%&'()*+,-./0123456789Ii<=>?@AVMHRTGYUNEOLKP:QWSBFCDXJZ[\]^_`avmhrtgyuneolkp;qwsbfcdxjz{|}~ (注:これは@ETHproductionsによって手作業で転写されたものですので、エラーを見つけた場合は指摘してください!) 例 DVORAK zZxX 入力として出力として与える ;:qQ これはコードゴルフなので、バイト単位の最短回答が勝ちです!

9
11のないパリンドローム素数
偶数桁のパリンドロームは11で割り切れるので、偶数桁の唯一の[回文素数]が11です。- デイビスワッサーマン、OEIS 私は今日、これを手作業で学びました。調査を行う前に、パリンドローム素数の計算時にプログラムが偶数桁(11を除く)の数値をスキップしたときです。あなたのタスク:整数入力Nが与えられると、StephenのPalindromic Sequence™のN番目の項を出力するプログラムまたは関数を作成します。 スティーブンのパリンドロームシーケンス™ StephenのPalindromic Sequence™は11で始まり、11で割り切れるパリンドローム セミプライムで続行します。基本的に、11が「カウント」されなかった場合にプライムになるすべてのセミプライム。利点は、このリストに偶数桁の数字が含まれていることです!わーい。また、奇数の桁を持つ多くの数字は、既に素数であるためスキップされます。 シーケンスの始まり: 1 : 11 2 : 22 3 : 33 4 : 55 5 : 77 6 : 121 7 : 737 8 : 979 9 : 1111 10 : 1441 11 : 1661 12 : 1991 13 : 3113 14 : …

12
プラスまたはマイナスのポリグロット!
提出には、数字のリスト(言語がサポートしているリスト形式、または複数の関数/コマンドラインパラメーターを使用)または数字以外の文字で区切られた文字列を使用する必要があり0123456789ます。1つの言語では、すべてを追加して合計を出力する必要があります。別の言語では、それらを順番に減算して出力する必要があります。例: 12 5 7 2 ある言語ではを出力する必要26があり、別の言語ではを出力する必要があります-2。入力されるすべての数値はより小さい正の整数になることに注意してください100。指定された20数を超えることは決してないので、より大きい2000または小さいを出力することはありません-1899。質問は?以下にコメントしてください!

4
2048パズルのようにテキストの重力を変更する
ゲーム2048では、グリッドがあり、4つの方向に要素を移動できます。それらはすべて、可能な限りその方向に移動します。このチャレンジでは、次のように、パディングされた正方形の2D文字列(改行または文字列のリスト)が与えられます。 ab cd e f ghij kl mno p q r st u v w x y z または ['ab cd e ', ' f ghij ', ' kl', 'mno p ', ' q r st ', 'u v', ' w x y ', 'z '] 4つの操作はleft、right、up、とdown。上記の入力のそれぞれの結果: 左: abcde fghij …
14 code-golf  string 

9
パーツごとのリストと配列
この課題では、特定の方法で解決する必要がある4つの異なるが多少関連するタスクを取得します。最初にタスクを説明し、次にそれを解決する方法の説明に従います。 コードでは、4つのタスクすべてに対して、入力として2つの正の整数を使用する必要n,mがありn<mます。すべてのタスクは同じ言語で解決する必要があります。行列の方向はオプションです(n行m列は、「n行、m列」または「n列、m行」と解釈される場合があります)。 タスク1: 要素で構成されるベクトル/リストを作成(および出力/印刷)しますn, n+1 ... m-1, m。したがって、の場合n=4, m=9、次のように出力する必要があります4,5,6,7,8,9。 タスク2: 次のような行列/配列/リストのリスト(または同等のもの)を作成(および出力/印刷)します。 n, n+1, ... m-1, m n+1, n+2, ... m-1, m+1 ... n+m, n+m+1, ... 2*m-1, 2*m n=4, m=9あなたが出力します: 4, 5, 6, 7, 8, 9 5, 6, 7, 8, 9, 10 ... 13, 14, 15, 16, 17, 18 タスク3: n行m列の乗算テーブルを(適切な形式で)作成(および出力/印刷)します。例n=4, …

1
アボカドを搾り出すのを手伝ってください
このチャレンジでは、アボカドの分野があり、それを可能な限り迅速かつ完全に絞りたいと思っています。すべてのアボカドを完璧に搾り出す方法を見つけるのに役立つプログラムまたは関数を作成できますか? 入力として、アボカドを3から6の間の整数であるmx m正方形グリッドとして取得しますm。各正方形には1つのアボカドのみが含まれています。アボカドにはいくつかのジューシーな段階があります: ステージ1:アボカドはまったく搾り出されていません。 ステージ2:アボカドは部分的に搾り出されています。 ステージ3:アボカドは完全に搾り出されています。 ステージ4:アボカドは過剰な水分摂取により爆発しました。 ジューシングツールを使用すると、そのジューシングツールの効果範囲内のアボカドが次の段階に移動します。爆発するアボカドには大きな力があり、アボカドのフィールド全体を破壊するため、アボカドが爆発しないようにしてください! アボカドのグリッドの例を次に示します。これらの例では、0,0左下隅の座標2,2と右上隅の座標を使用しましたが、言語に合わせて座標系を調整できます。 112 221 231 目標は、すべてのアボカドを完全に搾り出すことです(つまり、ステージ3)。これを実現するには、3つの異なるジューシングツールを所有しています。各ジューシングツールの効果範囲は異なりますが、影響を受けるアボカドのジューシーさはすべて1増加します。 自由に使えるツールはすべてここにあります。ジューサーを使用するには、ツールの最初の文字を指定してから、ジュースにしたい座標を指定します。たとえば、square 5,2でスライサーを使用するには、を出力しますS 5,2。 スライサー:ターゲット座標と両側のアボカドを絞り出します。 112 112 112 221 --> XXX --> 332 231 231 231 おろし金:ターゲット座標とアボカドを上下に絞ります。 112 1X2 122 221 --> 2X1 --> 231 --> kaboom! 231 2X1 241 ロケットランチャー:ターゲット座標と隣接するすべてのアボカドを絞り出します。 112 1X2 122 221 --> XXX --> …
14 code-golf 

11
A、バズ、C、D、E、フィズ、G
文字列を使用した単純なFizzBu​​zz。 与えられた 1単語またはフレーズ(文字列) 2つのユニークなキャラクター 出力 最初の文字が出現するたびにfizzに置き換えられ、2番目の文字がそれぞれバズに置き換えられた単語またはフレーズ ルール フィズとバズの両方の最初の文字は大文字のままにしてください 残りの単語fizzとbuzzについては、置き換えられた文字の大文字と小文字を一致させる必要があります(大文字と小文字を区別しない場合は小文字のままにしてください) 指定した文字がフレーズに含まれていない場合は、元のフレーズを出力します テストケース Given: Hello, h, l Output: FIZZeBuzzBuzzo Given: test, a, b Output: test Given: PCG rocks!, , ! PCGFizzrocksBuzz Given: This Is SPARTA!, , S Output: ThiBuzzFizzIBuzzFizzBUZZPARTA! Given: FizzBuzz, a, b Output: FizzBUZZuzz これはコードゴルフなので、バイト単位の最短コードが勝ちです! 注意 改行のケース(これはSPARTA!)の技術的な処理は、課題の一部です。ただし、一部の言語では非常に困難または不可能であるため、これを含めないことに対する回答を無効にしません。
14 code-golf  string 

4
数学問題表記法を解く
それぞれに整数が与えられた宿題の問題が無限にあると想像してください(!)。 数学問題表記法は、問題指定子を使用して問題のサブセットを記述するための表記法です。 MPN式は、次のもので構成されます。 単一の値。これは、番号を含むセットを表します99 -> {99}。 シンプルな範囲。これは、範囲の最初から最後までのすべての数値を含むセットを表します10~13 -> {10, 11, 12, 13}。左側または右側が欠落している場合、それぞれ-InfinityまたはInfinityと見なされます~10 -> {x|x ≤ 10}。~ -> ℤ。 「スキップ」と別のMPN式が続くMPN式。これは、2つのセットの差を表します10~20 skip 12~14 -> {10, 11, 15, 16, 17, 18, 19, 20}。 コンマで区切られた2つのMPN式。これは、2つのセットの和集合を表します1,8~9,15~17 -> {1,8,9,15,16,17}。 「スキップ」演算子はコンマ演算子よりも厳密にバインドするため、16,110~112 skip 16 -> {16,110,111,112}16はset {110,111,112}に含まれないため、16を除外することは問題になりません。 曖昧さをなくすために括弧で式を置くこともできます: 1~9 skip (2~8 skip (3~7 skip (4~6 skip 5))) -> …

2
ビーチでの一日
この挑戦に触発された ゴール: 目標は、ビーチに打ち寄せる波を描くことです。 入力: 入力として3つの整数(任意の形式)が与えられます。 最初の整数は図面の長さ、2番目の整数は砂州のインデックスで、波が波紋を開始します(ビーチから少なくとも3スペース) 3番目の整数は波の間隔(少なくとも3、描画の長さよりも長くしてください。この場合、1つの波だけを描画します) 出力: 出力は、ビーチに打ち寄せる波を示す文字のボックスになります。最初の波が浜辺への衝突を完了したら、図面は終了するはずです。 最初は、波はうねりとして表示され_-_ます()。 波が砂州を通過すると、波が始まります(/c_)。 最後に、波はビーチに衝突します(/c.=> _-_=> ___=> __.)。 例: 入力:14 4 6 出力: -___________.. _-__________.. __-_________.. ___-________.. ___/c_______.. ____/c______.. -____/c_____.. _-____/c____.. __-____/c___.. ___-____/c__.. ___/c____/c_.. ____/c____/c.. -____/c____-_. _-____/c_____. __-____/c___.. 入力:10、2、11 出力: -_______.. _-______.. _/c_____.. __/c____.. ___/c___.. ____/c__.. _____/c_.. ______/c.. _______-_. _________. ________.. 入力:6 0 …

1
絵をスライドパズルにする
概要 このチャレンジの目標は、フランス語でタキンとも呼ばれる15パズル / スライディングパズルの元に戻すイメージバージョンを作成することです。 詳細: 以下で構成される入力が与えられた場合: 画像、 整数n、 他の整数r、 プログラム、関数、または適合するその他のものは、入力と同じイメージ(つまり、同じサイズと形式)を出力する必要がありますが、次のプロセスが行われました。 画像をn²長方形に分割し、 それらの長方形の1つをランダムに削除し、 ポイント(2.)の影響を受ける行/列からランダムな数の連続した長方形を移動して、作成された穴を埋め、この行/列に別の1つを生成します。この番号は0、ブランクがコーナーまたはエッジにある場合になります。 (3.)r回繰り返します。 明確化: 手順(3.)で行から長方形を移動した場合、次の繰り返しで列から長方形を移動する必要があります。 行ステップで長方形を左から右に移動した場合、次の行ステップで長方形を右から左に移動する必要があります。これは、列に関して上から下および下から上と同じです。 n画像の辺の長さを分割するように選択されると仮定できます。 最後のポイント: .gif全体のプロセスを示すアニメーションは大歓迎です。 私は(これは、次の画像を使用することを提案1024x768して、)n=16とr=100モデルとして、あなたは使用することができ、他の画像を(それはもちろん、SEの規則に関連するだと準拠限り)。 標準の抜け穴ポリシーが適用されることに注意してください。 これはコードゴルフなので、短い提出が勝ちます! 例がリクエストされたので、ここに「手で」作られたものn=4とr=1 ステップ1および2 ステップ3:行ごとに、左に2つの長方形

23
黄色の木に分かれた2つの道路(パート1)
これはシリーズの最初であり、2番目は黄色の木で分岐した2つの道路です(パート2) この課題は、ロバートフロストの有名な詩「The Road Not Taken」に触発されています。 2本の道が黄色い木に分かれていて、 残念ながら私は両方を旅行することはできず 、一人の旅行者であり、長く立っていて、できる限り 1本を見下ろしてい ました。 それから、もう一方を公平に取りました。 そして、おそらくより良い主張を持って います。 それについては、そこのパッシングは 本当に同じように着用していましたが、 そして、その朝の両方が平等に 横たわり、黒が踏まれた段差はなかった。 ああ、私は別の日のために最初を保った! しかし、道が道にどのようにつながるかを知っていたので、 私は戻ってくるべきかどうか疑っていました。 私はこれを どこか年齢と年齢のため息で告げるつもりです: 2本の道が森の中に分かれていて、 私は旅の少ない道を取りました。 そしてそれがすべての違いを生みました。 最後から2番目の行に注目してくださいI took the one less traveled by,。 あなたの実際の挑戦 次のような形式で入力を受け取ります。 # ## # ## # ## # # # 細い道を見つける必要があります。 道路はから始まり#ます。常に一番上の行で終わる他の2つの道路は、調査する必要がある道路です。最も太い道路は最も多くの人が通っているので、あなたが望む通りではありません。もう1つは最も移動が少なく、必要なものです。 出力 プログラム/関数は、2つの異なる値(たとえば、0または1、trueまたはfalse)のうちの1つを出力する必要があります。たとえば、撮影されていない道路が撮影された道路の左側にある場合は0を出力し、そうでない場合は1を出力するか、文字列「left」または「right」、true、falseなどを出力できます。 テストケース: ## # …

2
ループの内側を見つける
仕事 ループのASCII図を考える 例えば .................... ......@@@@@......... ......@...@......... .....@@...@@@@@..... ....@@........@..... ....@........@@..... ....@@@@@@@@@@...... .................... .................... そしてループ上の場所 例えば (7,1) ループの内側と外側を見つける必要があります 例えば 00000000000000000000 00000011111000000000 00000011111000000000 00000111111111100000 00001111111111100000 00001111111111100000 00001111111111000000 00000000000000000000 00000000000000000000 仕様書 改行または明らかな同等物で区切られた文字列としてダイアグラムの入力を取得できます 入力の一部として、ループ上の座標(インデックスが0または1)を受け取ります。希望する場所に原点を配置できます。この座標はで(<row>, <column>)、(<column>, <row>)または文字列の線形位置として取得できます。これらのデータは、合理的な方法で受け取ることができます。ループ上のすべての文字は、そのインデックスの文字と同じになります。 好適出力しかし、ストリングのtruthyとfalsy値の2次元配列である1と0改行以降両者の明らかな等価受け入れられることによって分離しました。内側と外側は異なる真理値を持っている必要がありますが、どちらがどちらであるかは関係ありません。 ループは、すべて同じ文字(たとえば@)であり、ループ内のすべての文字が元の文字(入力の座標にある文字)へのパスを持ち、同じ文字のみを通過するように、文字のグループとして定義されます。文字(Taxicabジオメトリ斜めなし)。 内部はすべてループそのものであり、ループを通過せずにダイアグラムの端に到達できない場所です。 外はどこにでもある これはコードゴルフです テストケース ペーストビン

1
難読化された整数表記
編集:この質問の新しいバージョンをmeta-golf近日中に投稿します。おしゃべり! 編集#2:チャレンジを更新するのではなく、開いたままにします。meta-golfバージョンは、ここに提供されています:/codegolf/106509/obfuscated-number-golf バックグラウンド: ほとんどの数字は、6つの異なるシンボルでのみ記述できます。 e (オイラーの定数) - (否定ではなく減算) ^ (べき乗) ( ) ln (自然対数) たとえば、i次の式を使用して虚数を変換できます。 (e-e-e^(e-e))^(e^(e-e-ln(e^(e-e)-(e-e-e^(e-e))))) ゴール: k合理的な手段で整数が与えられた場合、それらの6つのシンボルのみを使用して、その数の可能な限り短い表現を出力します。 例: 0 => "e-e" 1 => "ln(e)" 2 => "ln(ee)" // Since - cannot be used for negation, this is not a valid solution: // ln(e)-(-ln(e)) -1 => "e-e-ln(e)" ノート: 終了括弧は、文字の合計数にカウントされます。 ln( …

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