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

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

14
Modバランスリスト
前書き L = [-1,2,2,1,2,7,1,4]などの整数のリストがあるとします。私は人生でバランスを取るのが好きなので、偶数要素と同じくらい多くの奇妙な要素を持っているのを見てうれしいです。さらに、すべての3のモジュロクラスに等しい数の要素があり、次の要素があります。 [-1,2,2,1,2,7,1,4] 0 mod 3: 1 mod 3: 1 7 1 4 2 mod 3: -1 2 2 2 悲しいことに、4のモジュロクラスの場合、これはもはや成り立ちません。一般に、空でないリストは、この数が0ではないNのすべてのモジュロクラスに等しい数の要素がある場合、モジュロNでバランスが取れていると言います。上記のリスト Lがバランスモジュロ2及び3であるが、不平衡モジュロ4。 タスク 入力は、適切な形式で取得された整数の空でないリストLです。あなたの出力は、これらの整数のリストであるN≥2なるようにLがモジュロバランスさN、再び任意の合理的な形式で、。出力の順序は重要ではありませんが、重複を含めることはできません。 出力には有限数の数値しか存在しないことが保証されています。つまり、Lのすべての要素が同じ回数出現するわけではないことを正確に意味しています。無効な入力の例は[3]、[1,2]および[0,4,4,0,3,3]です。出力の最大数は最大でmax(L)-min(L)であることに注意してください。 各言語の最小バイト数が優先され、標準のコードゴルフ規則が適用されます。 テストケース [1,1,2] -> [] [1,1,5] -> [2,4] [1,1,24] -> [23] [1,2,3,2] -> [2] [12,12,-4,20] -> [2,3,4,6,8,12,24] [1,1,12,12,-3,7] -> [3,10] [-1,2,2,1,2,7,1,4] -> [2,3] …

1
FASMでコンパイルされたx86 ASMのEXEサイズを減らす方法は?
演習として、x86アセンブリ言語でこの課題に対する簡単なソリューションを作成しました。これをWindowsのFASMで実行しています。これが私のソースコードです。 format PE console entry start include 'WIN32A.inc' section '.text' code executable start: push char ; Start at 'A' call [printf] ; Print the current letter 4 times call [printf] call [printf] call [printf] inc [char] ; Increment the letter cmp [char], 'Z' ; Compare to 'Z' jle start ; …


30
2因子分解
自然数が与えられると、nプログラムまたは関数を記述して、達成に使用できるすべての可能な2つの因子乗算のリストを取得しますn。ふりの内容をよりよく理解するには、http://factornumber.com/?page = 16777216にアクセスして、次のリストnがいつ16777216取得されるかを確認します。 2 × 8388608 4 × 4194304 8 × 2097152 16 × 1048576 32 × 524288 64 × 262144 128 × 131072 256 × 65536 512 × 32768 1024 × 16384 2048 × 8192 4096 × 4096 ここのようなものをきれいに印刷する必要はありません。要件は、各エントリ(因子のペア)が互いに十分に区別され、各ペアの内側で、最初の因子も他から明確に区別されることです。リスト/配列を返すことを選択した場合、内部要素は、2つの要素を持つリスト/配列、またはC ++などのペアをサポートする言語の構造になりますstd::pair。 1つのエントリによる乗算を出力したり、1番目の係数を2番目の係数で置き換えてエントリを繰り返したりしないでください。 勝者なし; それは言語ごとの基本コードのゴルフになります。

7
子供のアルファベットマットは色別に適切にグループ化されていますか?
私の子供には、次のようなアルファベットマットがあります。 数か月後、マットのタイルをランダムに配置した後、疲れて、背景色に応じてセクションごとにグループ化されたマットのタイルをすべて配置しました。したがって、文字が背景色を表す場合、次のようなマットができました。 AABBCDDDE ABBCCCDEE ABCCCCDDE AACCCDDEE AAAACCCCE AAAAAACCC したがって、A、B、C、D、およびEの色については、マット内のすべてのタイルを同じ背景色で水平または垂直に接続する方法が常にあります。それは私が色によって適切にグループ化されたマットと呼ぶものです。次の表で、前の例のグループを確認できます。 AA A A AA AAAA AAAAAA BB BB B C CCC CCCC CCC CCCC CCC DDD D DD DD E EE E EE E また、すべての色に対して1つのグループしかないため、これは無効です。 ABA ABA カラーAタイルは1つのグループのみにグループ化されていないためです。また、タイルは水平または垂直に接続しないため、これも無効になります。 AB BA チャレンジ 印刷可能なASCII範囲の文字の2次元配列(両方の次元のサイズが1以上である限り正方形である必要はありません)が与えられている場合、配列が色で適切にグループ化されたマットを表すかどうかを確認します(配列内の異なる文字はそれぞれ異なる色を表します)。入力は、文字の2次元配列(2D char配列、同じ長さの文字列の配列など)を表す限り、任意の妥当な形式であり、出力は、真偽値と偽値(0 / 1、 't' / 'f'、true / false、何かが返され、戻り値が入力間で一貫している限り)。 これはコードゴルフなので、各言語の最短のプログラム/関数/メソッド/ラムダが勝つかもしれません! …

30
追加と消去
文字のみで構成される1行を指定して、次のように処理します。 最初は空の文字列を維持します。 次の入力文字が文字列にある場合は、文字列から削除します。 次の入力文字が文字列にない場合は、文字列に追加します。 文字列の最終状態を出力します。 入力が少なくとも1文字(空でない)で構成されていると安全に想定できますが、出力が空でないという保証はありません。 擬似コード(これを自由にゴルフしてください): str = EMPTY for each character ch in input if ch exists in str remove all ch from str else append ch to str print str 入力は正規表現と一致します^[A-Za-z]+$。 サンプルテストケース: ABCDBCCBE -> ADCBE ABCXYZCABXAYZ -> A aAABBbAbbB -> aAbB GG -> (empty) 入力は任意の適切な方法で指定できますが、文字列として処理する必要があり、出力についても同じである必要があります。プログラムはエラーで終了しません。 各言語の最短プログラムが勝ちます! 追加(オプション):プログラムの仕組みを説明してください。ありがとうございました。
14 code-golf  string 

8
頂点接続の合計
正の整数Nがあるとしましょう。最初に、N個の頂点を持ち、隣接する頂点間の距離が1である通常のポリゴンを作成します。次に、すべての頂点から他のすべての頂点まで線を接続します。最後に、合計されたすべての行の長さを計算します。 例 入力N = 6を指定すると、すべての頂点を他の頂点と接続する線で六角形を構築します。 ご覧のとおり、合計6本の境界線(長さ= 1)、2倍の境界線長さ(長さ= 2)、およびピタゴラスの定理を使用して、 、 行の長さを合計すると、(6 * 1)+(3 * 2)+(6 * 1.732)= 22.392になります。 追加情報 2つ以下の頂点を持つ構造はポリゴンと見なされNaNないため、1つの頂点は他の頂点に接続できないため、N = 1の場合は0(または1つの頂点間の距離はあまり意味がないため)を出力し、 N =2。2つの頂点が1本の線で接続されているため。 入力 合理的な形式の整数N。 出力 すべての行の長さを合計すると、関数の戻り値として、またはに直接出力され、小数点以下3桁まで正確stdoutです。 ルール 標準的な抜け穴は禁止されています。 これはcode-golfであるため、どの言語でもバイト単位の最短コードが優先されます。 幸運を! テストケース (Input) -> (Output) 1 -> 0 or NaN 2 -> 1 3 -> 3 5 -> 13.091 6 …

14
2つの名
姓も一般名である場合、人には2つの名があります。リスト内のどの氏名が2つの名であるかを判断する必要があります。 John Smith John Doe Luke Ryan Ryan Johnson Jenna Jackson Tom John 名の列に現れる名前はすべて名である可能性があります。名の列の名前の出現回数が姓の列の出現回数より大きい場合、それは間違いなく名です。 上記のリストでJohnは、名に2回、姓に1回表示されるため、間違いなく名になります。Ryan最初に1回、最後に1回出現するため、(おそらく)名です。 したがって、Tom John間違いなく2つの名があり、Luke Ryanおそらくそうです。 上記のリストを考えると、コードは以下を出力するはずです。 Luke Ryan has two first names Tom John definitely has two first names 入力 前述のように、コードはスペースで区切られたフルネームのリスト(標準入力から、1行に1つ)を受け取ります。名前にはハイフンまたはアポストロフィを含めることができますが、スペースを含む姓または名は付けられません(つまり、いいえLiam De Rosa、Liam De-RosaまたはLiam De'Rosa公平なゲームです。言い換えると、名前は一致し[-'A-Za-z]+ます)。 各フルネームは一意です(つまり、John Smith2回表示されません)。 出力 フルネームの名前(1行に1回)を印刷し、その後に、has two first namesまたはdefinitely has two first names上記の条件を満たす場合に続けて印刷します。名前は一度だけ印刷する必要があります。 2つの名ではない名前は印刷する必要はありません。 …
14 code-golf  string 

27
RLE Brainfuck方言
RLE Brainfuck (BF-RLEに関連) Brainfuck の架空のRLE(Run-Length Encoding)方言は、8つのコマンドの記号を受け入れ、数字も受け入れます。数字は、コマンドの連続した繰り返しの数を表すために使用されるため、ソースコードのランレングスエンコーディングが可能になります。 8>に等しい>>>>>>>>。 長さは常にコマンドの左側にあります。 あなたの仕事は、入力文字列(RLE Brainfuckフラグメント)を通常のBrainfuckプログラムに変換する最短のプログラム/関数を書くことです。 例えば: 入力: 10+[>+>3+>7+>10+4<-]3>2+.>+.7+2.3+.2<2+.>15+.>.3+.6-.8-.2<+.<. アウトプット: ++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>++.>+.+++++++..+++.<<++.>+++++++++++++++.>.+++.------.--------.<<+.<. 各言語のバイトカウントの最短コードが優先されます。

14
[N]とM反復の再帰的に連結された累積和
2つの正の整数NをM取得し[N]、M反復での連結累積和を作成します。最後の反復の結果を出力します。 連結累積合計の定義: 数字Nから始めてシーケンスを定義するX = [N] 追加Xの累積和X 手順を2 M回繰り返します。 ベクトルの累積合計X = [x1, x2, x3, x4]は次のとおり[x1, x1+x2, x1+x2+x3, x1+x2+x3+x4]です。 例N = 1とM = 4: P =累積和関数。 M = 0: [1] M = 1: [1, 1] - X = [1, P(1)] = [[1], [1]] M = 2: [1, 1, 1, 2] - X …
14 code-golf  number  sequence  code-golf  number  sequence  code-golf  binary-matrix  code-golf  math  tips  javascript  algorithm  code-golf  string  code-golf  number  sequence  code-golf  math  arithmetic  parsing  code-golf  number  sequence  primes  code-golf  string  ascii-art  geometry  integer  code-golf  geometry  code-golf  number  array-manipulation  code-golf  math  geometry  code-golf  number  sequence  arithmetic  integer  code-golf  string  kolmogorov-complexity  code-golf  number  code-golf  number  chess  code-golf  sequence  decision-problem  subsequence  code-golf  math  number  primes  code-golf  primes  permutations  code-golf  integer  probability-theory  statistics  code-golf  string  code-golf  sequence  decision-problem  parsing  board-game  code-golf  binary  graph-theory  code-golf  board-game  classification  tic-tac-toe  code-golf  ascii-art  polyglot  code-golf  date  code-golf  geometry 

25
ホッピング番号
仕事 整数nを出力します。ここで12 <= n <= 123456789、およびn の連続する数字のすべてのペアは、それらの間で同じ正の差を持ちます(2469ではなく2468など)。 入力なし。 出力: 12 13 14 15 16 17 18 19 23 24 25 26 27 28 29 34 35 36 37 38 39 45 46 47 48 49 56 57 58 59 67 68 69 78 79 89 123 135 147 159 234 …

2
パスセグメントのように。初めて触れた
2つ以上の2Dデカルトポイントの順序付きリストが与えられた場合、パスがそれ自体に触れるか自己交差する場合、真の値を出力します。それ以外の場合、それ自体に触れたり自己交差したりしない場合、偽の値を出力します。 リスト内の連続したポイントは別個のものであると想定することができます。 例: (0,0), (1,0) -> falsey (0,0), (1,0), (0,0) -> truthy (0,0), (1,0), (1,1), (0,0) -> truthy (0,0), (2,0), (1,1), (1,-1) -> truthy (0,0), (10,0), (0,1), (10,1), (0,2), (10,2) -> falsey ここで指定したすべての座標は整数です。{整数、小数、有理数、浮動小数点、...}のうち、好きなものの座標入力をサポートできます。ただし、実装の計算では、与えられた入力に対して正しい答えを与える必要があります。

30
一意の素数はいくつですか?
自然数を表す1つの方法は、素数の指数を乗算することです。たとえば、6は2 ^ 1 * 3 ^ 1で表すことができ、50は2 ^ 1 * 5 ^ 2(^は指数を表す)で表すことができます。この表現の素数の数は、他の方法と比較して、この表現方法を使用する方が短いかどうかを判断するのに役立ちます。しかし、これらを手動で計算したくないので、それを行うためのプログラムが必要です。ただし、家に帰るまでプログラムを覚えておく必要があるため、できるだけ短くする必要があります。 あなたのタスク: プログラムまたは関数を作成して、この数値表現に異なる素数がいくつあるかを判断します。 入力: 通常の方法で取得される、1 <n <10 ^ 12のような整数n。 出力: はじめに概説したように、入力を表すために必要な個別の素数の数。 テストケース: 24 -> 2 (2^3*3^1) 126 -> 3 (2^1*3^2*7^1) 1538493 -> 4 (3^1*11^1*23^1*2027^1) 123456 -> 3 (2^6*3^1*643^1) これはOEIS A001221です。 得点: これはcode-golfで、バイト単位の最低スコアが勝ちです!

19
ユーロ元のシーケンス
正の整数nを指定すると、ユーロ元のシーケンスのn番目の数が出力されます。 シーケンスの計算 このシーケンスは、OEIS A242491と同じです。 数が異なるユーロ硬貨または紙幣を使用することで構成できる場合、番号は上記のシーケンスの一部ですが、それぞれの1つだけです。セントを考慮する必要がないことに注意してください。 例: 6 1ユーロ硬貨と5ユーロ硬貨で構成できるため、シーケンス内にあります。 4 指定された要件では形成できないため、シーケンスには含まれません。 全員に概要を示すために、考慮する必要があるユーロの値のリストを以下に示します。 1€、2€、5€、10€、20€、50€、100€、200€、500€ このシーケンスの範囲は0(はい、0も含まれます!)から888までのみです。 このシーケンスの最初の15要素は次のとおりです。 0、1、2、3、5、6、7、8、10、11、12、13、15、16、17、... テストケース 入力 -> 出力 2 -> 1 6 -> 6 21 -> 25 33 -> 50

14
ウィルソン数を計算する
正の整数nが与えられた場合、n 番目の ウィルソン数 W(n)を計算します。 そして、E = 1であればN原始根モジュロを有するN、そうでなければ、E = -1。つまり、整数xが存在しない場合(1 < x < n-1およびx 2 = 1 mod n)、nにはプリミティブルートがあります。 これはコードゴルフなので、入力整数n > 0 に対してn 番目のウィルソン数を計算する関数またはプログラムの最短コードを作成します。 1ベースまたは0ベースのインデックスを使用できます。最初のn個のウィルソン数を出力することもできます。 これは、OEISシーケンスA157249です。 テストケース n W(n) 1 2 2 1 3 1 4 1 5 5 6 1 7 103 8 13 9 249 10 19 11 329891 …

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