간단한 패턴


17

입력 :

선택한 입력 형식의 두 개의 단일 자릿수 ( mn) 및 두 자릿수 ( ab)를 입력하십시오.

산출:

연습을 위해 척하십시오 m=2, n=5, a='a', b='b'.

출력은 4 개의 입력으로 구성된 문자열입니다. resultvalue를 사용 하여 문자열을 호출 해 봅시다 "". 첫째, CONCATENATE a위에 result m배, CONCATENATE 그래서 a위에 result 2배. result이제는 같습니다 aa. 둘째, CONCATENATE b위에 result m배, CONCATENATE 그래서 b위에 result 2배. result이제는 같습니다 aabb. 마지막으로 결과가 이미보다 길면 길이가되도록 n잘립니다 . 그렇지 않으면,와 교류를 계속 의 길이를 실행 하고 때까지 길이 . 마지막 은 길이 입니다.resultnmabresultnresultaabba5

테스트 사례 :

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'이되고"더 적은 것이 세계를 지배 할 것 "이란 무엇입니까?
Outgolfer Erik

나는 기본적으로 도전을 다시 작성하여 내가 생각한 것을 원래 의도로 유지했습니다. 원하는 경우 롤백 할 수 있지만 원래 상태에서는 다시 열리지 않습니다.
Stephen

@StepHen 당신은 내 하루를 저장 : p gracias :)
Durga

@Durga no problem :) 여전히 당신이 원하는 것을 말하게되어 기쁩니다.
Stephen

2
@Durga 제안 테스트 사례 :m=2,n=10,a=A,b=B
Rod

답변:


8

파이썬 , 32 바이트

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

온라인으로 사용해보십시오!


마지막으로 확인한 익명 함수가 허용되므로 f=-2 바이트를 제거 할 수 있습니다 .
동지 SparklePony

@ComradeSparklePony : 감사합니다. 그것은 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:)

입력은 두 개의 문자가 포함 된 문자열이며 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 코드로 훌륭하게 번역되는 방법을 정말로 즐긴다.
Justin Mariner



3

V , 13 바이트

ÀäjÀäêÍî
À|lD

온라인으로 사용해보십시오!

ab상기 입력의 각 행에 촬영, mn반전 인수로 취하고 (따라서 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단일 문자열이 아닌 문자로 구성된 벡터를 생성합니다.
Giuseppe

2

자바 스크립트, 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

자바 스크립트, 53 바이트

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



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위치 와 같은 입력을 *받습니다.

큐브 버전 :

        . 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: 읽고 mdup하고 맨 아래로 밀어 넣습니다 (스택이 완료되었습니다 m,b,a,m).
  • ) : 감소
  • ?: 양수이면 우회전, 0이면 직진 (중복 a)
  • 포지티브 브랜치 (루프)
    • s:rur(/w: 스왑, dup, m-i스택 맨 위로 이동 , 감소m-i
  • 제로 지점
    • B: 반전 스택 (현재 보유 된 m사본 a: a... b m)
    • n: 부정 m( ?왼쪽으로 돌릴 수 있음 )
    • ) : 증분
    • ? : 0이면 직진, 음수이면 좌회전
  • 마이너스 브랜치 (중복 b)
    • s:r\/rw)\ 기본적으로 포지티브 브랜치와 동일하지만 증분과 좌회전이 있습니다.
  • 제로 브랜치 (출력을 인쇄)
    • >v;다음 팝업 0스택에서 (같은 모양 a...b...)
    • /B : 스택 반전
    • I : 읽다 n
    • s : 스왑 인쇄 루프 :
  • oq : 이제 인쇄하고 스택 맨 아래로 밀어 넣는 모습은 다음과 같습니다. ab...a...n
  • ( 감소 n
  • ? : 양수이면 우회전, 0이면 직진
  • 올바른 경우 : /su: 스택 맨을 교체하고 루프를 계속합니다
  • 0이면 /반영하고 평가 된 코드는 Iru@; @프로그램을 종료합니다.

0

, 10 바이트

…⁺×ζIθ×εNN

온라인으로 사용해보십시오! 링크는 자세한 코드 버전으로 연결되며 네 번째 예를 포함합니다. (마지막으로 deverbosifer는 마지막 앞에 구분 기호를 추가해도 구분 기호를 제거하지 않습니다 InputNumber().)


구분 기호는 무엇을 의미합니까? (예를 들어 줄 수 있습니까)
ASCII 전용

@ ASCII-only 마지막 InputNumber () 앞의 쉼표로 생성 된 코드에 불필요한 구분 기호가 있습니다. 온라인으로 시도하십시오!
Neil

0

수학, 61 바이트

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

입력

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


0

매스 매 티카, 44 바이트

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

설명

Mathematica U+F3C7의 접미사 \[Transpose]연산자를 나타내는 3 바이트 개인용 문자 입니다. Mathics가을 (를) 지원하지 않기 때문에 TIO 링크 가없고 , \[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

Pyth , 13 바이트

KE<*+*EQ*EQKK

온라인으로 사용해보십시오!

설명

                 # Implicitly store m to Q
KE               # Store n to K
     *EQ         # Perform a * m
        *EQ      # Perform b * m
    +            # Concatenate the two strings
   *       K     # Multiply by n
  <         K    # Take the first n characters of the string


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 자 문자열로 취합니다. 처음 두 문자는 문자 ab 뒤에 바이트 값 m , 바이트 값 n 입니다. 예를 들어, 입력 TIO 포함 ab<tab>2이에 대한 코드 이후 'A', 'B', 9, 50에 대응하는 ( <tab>그리고 29와 50이다.

어떻게?

이 답변은 약간의 거대하지만 주요 내용은 다음과 같습니다.

소문자 a- h가있는 왼쪽 위 블록 은 문자 ab에 대한 저장 메커니즘으로 비트 당 한 줄입니다. 그 저부에서,과 v~vmz둘 사이의 교환에있어서, 스위칭 메커니즘이다.

가운데에는 여러 개의 열이 ~#M있습니다. 이것은 m을 읽고 음수를 저장합니다. 오른쪽에있는 큰 삼각형은이 값을 상단 누산기에 가져 오는 전선입니다.

오른쪽 상단 블록은 m에 대한 누산기입니다 . 0에 도달 할 때까지 모든주기 ( -m 에서 시작)가 증가 합니다. 이 경우 출력 문자가 바뀌고 계수는 -m 에서 다시 시작됩니다 .

한편, 하단 블록은 n 누산기입니다. 이후 , n은 한 번만 읽어, 우리는 메모리 (의 은행이 필요하지 않습니다 Mm이 값을 저장하기 위해). 우리는 단순히 그것을 부정하고 계산을 시작합니다. 이 값이 0에 도달하면 전체 세방이 단순히 종료됩니다.

다른 모든 시시한 이야기는 지연이다 ( Z그리고 z), 배선 ( -, |, ...) 및 기타 문집.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.