シンプルなパターン


17

入力:

選択した入力形式での2つの1桁(それらをm、と呼んでみましょうn)と2つの文字(aとと呼んでみましょうb)。

出力:

チュートリアルでは、のふりをしm=2, n=5, a='a', b='b'ます。

出力は、4つの入力から作成された文字列になります。resultvalueでstringを呼び出しましょう""。まず、CONCATENATE aへのresult m回なので、CONCATENATE aresult 2回。resultに等しくなりましたaa。第二に、CONCATENATE bへのresult m回なので、CONCATENATE bresult 2回。resultに等しくなりましたaabb。最後に、resultがすでにより長い場合nresultlengthを持つように切り捨てnます。それ以外の場合は、のm長さの実行aとが長さになるbまで交互に続けます。最後は、長さです。resultnresultaabba5

テストケース:

Input: m = 2, n = 4, a = A, b = B

Output: AABB

Input: m = 3, n = 8, a = A, b = B

Output: AAABBBAA

Input: m = 4, n = 3, a = A, b = B

Output: AAA

Input: m = 2, n = 10, a = A, b = B

Output: AABBAABBAA 

誰もが知っているように、小さい方が世界を支配するので、バイト単位の最小のプログラムが勝ちます!:)


「出力の合計文字数が「n」になり、「少ない文字が世界を支配する」とはどういう意味ですか?
エリックアウトゴルファー

私は基本的に挑戦を書き直し、私があなたの本来の意図であると信じるものを保持しました。必要に応じてロールバックできますが、元の状態では再開されません。
スティーブン

@StepHenあなたは私の日を救った:p gracias :)
ドゥルガ

@Durga問題ありません:)まだあなたが望んでいたことを言ってうれしいです。
スティーブン

2
@Durgaはテストケースを提案しました:m=2,n=10,a=A,b=B
ロッド

回答:


8

Python、32バイト

lambda m,n,a,b:((a*m+b*m)*n)[:n]

オンラインでお試しください!


最後にチェックした匿名関数は許可されているf=ため、-2バイトを削除できます。
同志SparklePony

@ComradeSparklePony:ご静聴ありがとうございました。これはTiOの残りです。実際にバイトカウントから既に削除していました。
ジュリアンウルフ

2
f=TIOのヘッダーセクションに配置できるため、手動で削除する必要はありません。TIO
17年

ああ、私はいつもバックスラッシュを忘れます。ありがとう。
ジュリアンウルフ

1
編集を提案した人へ(a*m+b*m)-> (a+b)*m:これは機能しません。
ジュリアンウルフ

6

MATL、5バイト

Y"i:)

入力は、2文字の文字列で、次にm、次にnです。

オンラインでお試しください!

説明

Y"   % Implicit inputs: string and number m. Apply run-length decoding.
     % The second input is reused for each char in the first. Gives a
     % string
i    % Input number n
:    % Push vector [1 2 ... n]
)    % Index the string with the numbers in that vector. Indexing is
     % modular, so the chars are reused if necessary. Implicit display



5

Japt、10バイト

VîUçW +UçX

最初にゴルフ言語を使用してみてください。オンラインでお試しください!

説明

Vî          // repeat the following until it reaches length V (second input)
  UçW       // third input repeated U (first input) times
      +UçX  // plus the fourth input, repeated U times

Japtを使用してくれてありがとう、そしてよくやった:-)あなたもできますVîWpU +XpUが、両方とも同じことをします。この課題に最適です。
ETHproductions

@ETHproductionsありがとう、そして作ってくれてありがとう!すべてがJSコードにうまく変換される方法を本当に楽しんでいます。
ジャスティンマリナー



3

V、13バイト

ÀäjÀäêÍî
À|lD

オンラインでお試しください!

aそしてb入力に別の行に取得され、mそしてn(SO引数として取られ、逆にn、最初の引数であり、m秒)

説明

Àäj      ' duplicate the inputs [arg 1] times
a -> a
b    b
     a
     b
     ...
   Àäê   ' duplicate everything straight down [arg 2] times - À cycles arguments
a -> aaa
b    bbb
a    aaa
b    bbb
...  ...
      Íî ' remove all newlines
-> aaabbbaaabbb...
À|lD     ' delete from the [arg 1] + 1 column onwards
-> aaabbbaa


3

R41 39バイト

function(d,m,n)cat(d[gl(2,m,n)],sep='')

匿名関数。結果を標準出力に出力します。文字をベクトルとして受け取りますd=c(a,b)gl(この場合)2ランレングスのレベルmと全体の長さの因子(整数)を生成しnます cat文字列として連結して印刷します。

オンラインでお試しください!


function(d,m,n)rep(d,e=m,l=n)有効な提案だと思います。
ovs

残念ながら、@ ovs repは単一の文字列ではなく文字のベクトルになります
ジュゼッペ

2

Javascript、55バイト

(m,n,a,b)=>(a[r='repeat'](m)+b[r](m))[r](n).substr(0,n)

サンプルコードスニペット:

f=

(m,n,a,b)=>(a[r='repeat'](m)+b[r](m))[r](n).substr(0,n)

console.log(f(2, 4, 'A', 'B'))
console.log(f(3, 8, 'A', 'B'))
console.log(f(4, 3, 'A', 'B'))
console.log(f(2, 9, 'A', 'B'))


2

JavaScript、53バイト

(m,n,a,b)=>a.repeat(n).replace(/./g,(i,j)=>j/m&1?b:i)



1

QBIC37 27バイト

[:|G=;+G+;][:|G=G+G]?_sG,d

説明

          This takes its arguments as frequency m, A, B, length n
          For example: 2, A, B, 8
 :        Read a cmd line arg as number 'b' ('a' is used by the FOR declaration as loop counter)
[ |       Start a FOR loop, from 1 to b
G=  G     Set G to hold itself
  ;+      prepended by a cmd line arg read as strig and assigned to A$
     +;   and followed by a cmd line arg read as strig and assigned to B$
]         At the end of the FOR loop, G has had A added to the front twice, and B t the end x2: G$ = AABB
[:|       FOR c = 1 to n
G=G+G]      Add G to itself          G$ = AABBAABBAABBAABBAABBAABBAABBAABB
?_sG,d    PRINT the first n chars of G$   AABBAABB

以前の試み:

(37b)  {Z=Z+;┘_LZ|~a=:|_X]~a%:|\C=A┘A=;┘B=C
Takes its arguments as `A, length n, frequency m, B`.
Basically adds A to Z until length % freq = 0, then swaps A for B. Loops until lengtn = n



1

Cubix63 58バイト

.rr.@u:s?.\.sw).i|>v:.\nB;?(q:Is...;rr/s.uw/....sIB/\/?(qo

オンラインでお試しください!

通訳を見る

が任意の非数字文字ab*m*nである*可能性があるような入力を受け取ります。

キューブバージョン:

        . r r .
        @ u : s
        ? . \ .
        s w ) .
i | > v : . \ n B ; ? ( q : I s
. . . ; r r / s . u w / . . . .
s I B / \ / ? ( q o . . . . . .
. . . . . . . . . . . . . . . .
        . . . .
        . . . .
        . . . .
        . . . .
  • i|is:文字を読み込み、それらを交換します(a上にあります)
  • I:q:読み込みm、dup、最後までプッシュ(スタックは現在m,b,a,m
  • ) :デクリメント
  • ?:正の場合は右に曲がり、ゼロの場合はまっすぐに進みます(重複a
  • 正の分岐(ループ)
    • s:rur(/w:スワップ、dup、m-iスタックの先頭に移動、デクリメントm-i
  • ゼロブランチ
    • B:逆スタック(現在:のmコピーがありaますa... b m
    • n:否定m(したがって?、左折に使用できます)
    • ) :増分
    • ? :ゼロの場合は直進、負の場合は左に曲がる
  • 負のブランチ(重複b
    • s:r\/rw)\ 基本的に正の分岐と同じですが、増分と左折があります。
  • ゼロブランチ(出力を印刷)
    • >v;0スタックからポップ(のように見えるa...b...
    • /B :スタックを逆にします
    • I : 読んだ n
    • s :印刷ループの交換:
  • oq :印刷してスタックの一番下にプッシュすると、次のようになります。 ab...a...n
  • ( デクリメント n
  • ? :正の場合は右に曲がり、ゼロの場合はまっすぐに進みます
  • 正しい場合: /suスタックの先頭を交換し、ループを続行します
  • ゼロの場合、/下方に反映され、評価されるコードはIru@;です。@プログラムを終了します。

0

、10バイト

…⁺×ζIθ×εNN

オンラインでお試しください!リンクはコードの詳細バージョンへのもので、4番目の例が含まれています。(迷惑なことに、最後の前にセパレータを追加しても、デベロボシファーはセパレータを削除しませんInputNumber()。)


セパレーターとはどういう意味ですか?(例を挙げてください)
ASCIIのみ

@ ASCII-only最後のInputNumber()の前にコンマがある場合、生成されたコードに不要な区切り文字が含まれていることに注意してください。オンラインで試してください!
ニール

0

Mathematica、61バイト

T=Table;StringTake[""<>Flatten@T[{#3~T~#,#4~T~#},⌈#2/#⌉],#2]&

入力

[2,10、 "A"、 "B"]


0

Mathematica、44バイト

StringPadRight[x={##3}~Table~#<>"",#2,x]&

説明

はMathematicaのU+F3C7接尾辞\[Transpose]演算子を表す3バイトの私用文字です。Mathicsはをサポートしていないため、TIOリンクはありません。\[Transpose]演算子の優先順位が間違っています。2番目の引数Tableはリストである必要があり、最も重要なのStringPadRightは実装されていません。

                                         & (* Function *)
                 {##3}                     (* which takes the third and fourth arguments *)
                      ~Table~#             (* repeats them a number of times equal to the first argument *)
                                          (* takes the tranpose *)
                               <>""        (* then joins the strings with the empty string *)
               x=                          (* sets x equal to that string *)
StringPadRight[                            (* then pads x *)
                                   ,#2     (* to a length equal to the second argument *)
                                      ,x]  (* with x. *)




0

チップ、588バイト

*Z~vZ.*ZZZs  z. z. z. z. z. z. z. z.
  ,'|`-. ZZ--#<,#<,#<,#<,#<,#<,#<,#<
a/mAM/a| `~S `x'`x'`x'`x'`x'`x'`x'`x.
b/mBM/b|  *.)/')/')/')/')/')/')/')/'|
c/mCM/cZv--x^x-^x-^x-^x-^x-^x-^x-^x-'
d/mDM/d||A~#M',-',-',-',-',-',-',-'
e/mEM/e||B~#M-',-',-',-',-',-',-'
f/mFM/f||C~#M--',-',-',-',-',-'
g/mGM/g||D~#M---',-',-',-',-'
h/mHM/h||E~#M----',-',-',-'
 `v~v' ||F~#M-----',-',-'
* `mz  ||G~#M------',-'
Z  `---x'H~#M-------'
Z,--z--^----'
Z|z. z. z. z. z. z. z. z.
Zx#<,#<,#<,#<,#<,#<,#<,#<
 |`x'`x'`x'`x'`x'`x'`x'`xT
 |A| B| C| D| E| F| G| H|
 )\')\')\')\')\')\')\')\'
 `--^--^--^--^--^--^--'

オンラインでお試しください!

入力を4文字の文字列として受け取ります。最初の2つは文字abで、その後にバイト値mが続き、次にバイト値nが続きます。例えば、TIO入力を含むab<tab>2、この対応に「A」、「B」、9、50(以来のためのコード<tab>2 9および50です。

どうやって?

この答えはちょっとした巨人ですが、ハイライトは次のとおりです。

小文字のa- を含む左上のブロックhは、文字aおよびbの格納メカニズムであり、1ビットにつき1行です。その下部にはv~vmzは、2つの間で交換するための切り替えメカニズムです。

真ん中には、がたくさんある列があります~#M。これはmで読み取りますをその負を保存します。右側の大きな三角形は、この値を上部のアキュムレーターに入れるための単なるワイヤーです。

右上のブロックはmの累算器です。ゼロに達するまで、すべてのサイクル(-mから開始)をインクリメントします。これが発生すると、出力文字が交換され、-mからカウントが再開されますます。

一方、下位ブロックがあります。これはnアキュムレータです。以来nは一度だけ読み込まれ、我々はメモリのバンクを必要とする(していないMm、この値を格納します)。単純に否定し、カウントを開始します。この値がゼロに達すると、シバン全体が単純に終了します。

他のすべてのguffは遅延(あるZz)、配線(-|、...)、および他の雑多。

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