Patttern ง่าย


17

ปัจจัยการผลิต:

ตัวเลขสองหลักเดียว (เรียกว่าพวกมันmและn) และสองตัวอักษร (เรียกมันว่า) aและbในรูปแบบอินพุตที่คุณเลือก

เอาท์พุท:

m=2, n=5, a='a', b='b'สำหรับคำแนะนำการหลอก

เอาต์พุตของคุณจะเป็นสตริงที่สร้างจากอินพุตสี่ตัวของคุณ ขอเรียกสตริงที่มีค่าresult ""ครั้งแรก concatenate aบนresult mเวลาเพื่อ concatenate aบนresult 2ครั้ง ตอนนี้เท่ากับresult aaประการที่สอง concatenate bบนresult mเวลาเพื่อ concatenate bบนresult 2ครั้ง ตอนนี้เท่ากับresult aabbสุดท้ายหากผลเป็นที่เรียบร้อยแล้วนานกว่าn, ตัดเพื่อที่จะมีความยาวresult nมิฉะนั้นต่อสลับกับmระยะเวลาในการทำงานของaและbจนกว่าจะมีความยาวresult nสุดท้ายresultมีที่ซึ่งมีความยาวaabba5

กรณีทดสอบ:

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 

อย่างที่ทุกคนรู้กันคนที่น้อยกว่าจะครองโลกดังนั้นรายการที่เล็กที่สุดเป็นไบต์ชนะ! :)


คุณหมายถึงอะไรโดย "ผลรวม char ในการส่งออกจะเป็น 'n'" และ "น้อยกว่าจะครองโลก"?
Erik the Outgolfer

โดยทั่วไปฉันเขียนความท้าทายใหม่โดยรักษาสิ่งที่ฉันเชื่อว่าเป็นความตั้งใจดั้งเดิมของคุณ คุณสามารถย้อนกลับหากคุณต้องการ แต่ในสภาพดั้งเดิมมันจะไม่ถูกเปิดอีกครั้ง
Stephen

@StepHen คุณบันทึกวันของฉัน: p gracias :)
Durga

@Durga ไม่มีปัญหา :) ฉันดีใจที่มันยังบอกว่าสิ่งที่คุณต้องการ
Stephen

2
@Durga เสนอกรณีทดสอบ:m=2,n=10,a=A,b=B
Rod

คำตอบ:


8

Pythonขนาด 32 ไบต์

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

ลองออนไลน์!


ฟังก์ชั่นที่ไม่ระบุชื่อได้รับอนุญาตเมื่อฉันตรวจสอบล่าสุดเพื่อให้คุณสามารถลบf=สำหรับ -2 ไบต์
สหาย SparklePony

@ComportSparklePony: ขอบคุณที่เฮงซวย นั่นคือสิ่งที่เหลืออยู่จาก TiO; ฉันได้ลบมันไปแล้วจากจำนวนไบต์
Julian Wolf

2
คุณสามารถใส่f=ในส่วนหัวของ TIO ดังนั้นคุณไม่จำเป็นต้องลบมันด้วยตนเอง TIO
ovs

อาฉันมักจะลืมเกี่ยวกับแบ็กสแลช ขอบคุณ
Julian Wolf

1
สำหรับใครก็ตามที่แนะนำการแก้ไข(a*m+b*m)-> (a+b)*m: สิ่งนี้ใช้ไม่ได้
Julian Wolf

6

MATL , 5 ไบต์

Y"i:)

ปัจจัยการผลิตที่มีสตริงกับตัวละครสองตัวนั้นแล้วmn

ลองออนไลน์!

คำอธิบาย

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 ขอบคุณและขอขอบคุณที่ทำให้มัน! ฉันสนุกกับวิธีการที่ทุกอย่าง transpiles เป็นรหัส JS
Justin Mariner


3

เยลลี่ , 6 4 ไบต์

xFṁ⁵

ลองออนไลน์!

ขอบคุณJonathan Allanสำหรับรูปแบบอินพุตที่ดีขึ้น (-2)


4 ไบต์เป็นโปรแกรมเต็มรูปแบบที่มีรูปแบบการป้อนข้อมูลที่แตกต่างกัน
Jonathan Allan

@JanathanAllan Heh ฉันมักจะพยายามหลีกเลี่ยงการใช้อาร์กิวเมนต์ที่สาม แต่คราวนี้มันทำให้คำตอบของฉันสั้นลง
Erik the Outgolfer

3

V , 13 ไบต์

ÀäjÀäêÍî
À|lD

ลองออนไลน์!

aและbนำมาแยกเป็นบรรทัดในอินพุตmและnนำมาเป็นอาร์กิวเมนต์กลับรายการ (เช่น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

R , 41 39 ไบต์

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

ฟังก์ชั่นที่ไม่ระบุชื่อ พิมพ์ผลลัพธ์ไปที่ stdout 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'))





1

QBIC , 37 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

Cubix , 63 58 ไบต์

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

ลองออนไลน์!

ดูล่าม

ใช้อินพุตเหมือนab*m*nที่*สามารถเป็นอักขระที่ไม่ใช่ตัวเลขใด ๆ ได้

รุ่น Cube:

        . 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: read in m, dup และ push to bottom (stack is now m,b,a,m)
  • ) : การลดลง
  • ?: เลี้ยวขวาถ้าบวกไปตรงถ้าเป็นศูนย์ (ซ้ำกันa)
  • สาขาบวก (ห่วง)
    • s:rur(/w: swap, dup, ย้ายm-iไปด้านบนสุดของ stack, ลดค่าm-i
  • ศูนย์สาขา
    • B: reverse stack (ซึ่งตอนนี้มีmสำเนาของa:a... b m )
    • n: ลบล้างm(เพื่อให้เราสามารถใช้?เพื่อเลี้ยวซ้าย)
    • ) : เพิ่มขึ้น
    • ? : ตรงไปถ้าศูนย์เลี้ยวซ้ายถ้าลบ
  • สาขาเชิงลบ (ซ้ำกันb)
    • s:r\/rw)\ โดยทั่วไปเหมือนกับสาขาบวก แต่มีการเพิ่มและหมุนซ้าย
  • ศูนย์สาขา (พิมพ์ออก)
    • >v;: pop the 0off the stack (ดูเหมือนa...b...)
    • /B : ย้อนกลับสแต็ก
    • I : อ่าน n
    • s : สลับการพิมพ์วน:
  • oq : พิมพ์และกดไปที่ด้านล่างของสแต็กตอนนี้ดูเหมือนว่า: ab...a...n
  • ( การพร่อง n
  • ? : เลี้ยวขวาถ้าบวกไปตรงถ้าเป็นศูนย์
  • ถ้าถูกต้อง/su:: สลับด้านบนของสแต็กและดำเนินการวนซ้ำ
  • ถ้าศูนย์/สะท้อนลงและรหัสการประเมินคือIru@; @ยุติโปรแกรม

0

ถ่าน 10 ไบต์

…⁺×ζIθ×εNN

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสรุ่นที่ละเอียดและรวมถึงตัวอย่างที่สี่ (น่ารำคาญที่ deverbosifer จะไม่ลบตัวคั่นถ้าฉันเพิ่มหนึ่งก่อนสุดท้ายInputNumber())


ตัวคั่นหมายถึงอะไร (คุณสามารถยกตัวอย่าง)
เฉพาะ ASCII

@ ASCII-only ด้วยเครื่องหมายจุลภาคหน้า InputNumber () สุดท้ายสังเกตว่ารหัสที่สร้างขึ้นมีตัวคั่นที่ไม่จำเป็น: ลองออนไลน์!
Neil


0

Mathematica ขนาด 44 ไบต์

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

คำอธิบาย

เป็นอักขระการใช้งานส่วนตัวสามไบต์U+F3C7ซึ่งแสดงถึงตัว\[Transpose]ดำเนินการpostfix ใน Mathematica ไม่มีการเชื่อมโยง TIO เพราะMathicsไม่สนับสนุน, \[Transpose]มีความสำคัญผู้ประกอบการที่ไม่ถูกต้องอาร์กิวเมนต์ที่สองไป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

APL (Dyalog) 5 ไบต์

⎕⍴⎕/⎕

ลองออนไลน์!

ใช้เวลาสองตัวอักษรในสตริงเป็นอินพุตแรกตามมาด้วยแล้วmn

คำอธิบาย

ให้การป้อนข้อมูลตัวอย่างเป็น'ab', ,210

⎕/⎕                 Replicate the two-char string `m` times
                    2/'ab' => 'aabb'
⎕⍴                  Shape it so that its length is `n`
                    10'aabb' => 'aabbaabbaa'



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 อักขระ สองคนแรกเป็นตัวละครและBตามด้วยค่าไบต์เมตรและแล้วค่าไบต์n ตัวอย่างเช่น TIO มีอินพุตซึ่งสอดคล้องกับ 'a', 'b', 9, 50 (ตั้งแต่รหัสสำหรับและคือ 9 และ 50ab<tab>2<tab>2

อย่างไร?

คำตอบนี้เป็นบิตของ behemoth แต่นี่คือไฮไลท์:

บล็อกซ้ายบนที่มีตัวพิมพ์เล็กa- hเป็นกลไกการจัดเก็บสำหรับอักขระaและbซึ่งเป็นหนึ่งบรรทัดต่อบิต ที่ด้านล่างมีv~vและmzเป็นกลไกการสลับเพื่อสลับระหว่างทั้งสอง

ในช่วงกลางเป็นคอลัมน์ที่มีพวงของ~#M's สิ่งนี้อ่านเป็นmและเก็บค่าลบ รูปสามเหลี่ยมขนาดใหญ่ทางด้านขวาเป็นเพียงสายไฟเพื่อนำค่านี้ไปสู่แอคคิวมูเลเตอร์บน

บล็อกขวาบนคือสะสมสำหรับม. มันเพิ่มขึ้นทุกรอบ (เริ่มต้นจาก-m ) จนกว่าจะถึงศูนย์ เมื่อเกิดเหตุการณ์นี้ตัวละครที่ส่งออกจะสลับและนับเตะจาก-m

ในขณะเดียวกันมีบล็อกที่ต่ำกว่าซึ่งเป็นตัวสะสมn เนื่องจากnอ่านเพียงครั้งเดียวเราจึงไม่จำเป็นต้องมีหน่วยความจำ ( Mและm) เพื่อจัดเก็บค่านี้ เราเพียง แต่คัดค้านและเริ่มนับ เมื่อค่านี้ถึงศูนย์ Shebang ทั้งหมดจะถูกยกเลิก

ทั้งหมด guff อื่น ๆ คือความล่าช้า ( Zและz), สายไฟ ( -, |... ) และอื่น ๆ จิปาถะ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.