장치가 오작동합니다 ... 정의되지 않은 문자열 동작을 남용하십시오!


12

도움! 장치가 오작동하고 문자열을 반복하려고 할 때마다 지저분한 결과가 나타납니다. 동일한 문자열을 N 번 반복하는 대신 NxN 정사각형을 각 문자로 채우고 정사각형을 쌓습니다.

예를 들어 String "Test"과 number 2대신에 "TestTest"다음을 얻습니다.

TT
TT
ee
ee
ss
ss
tt
tt

나는 이것을 잠시 동안 본 후에 그것을 좋아하기 시작했다. 오늘 당신의 임무는이 이상한 행동을 재현하는 것입니다. 인쇄 가능한 ASCII로만 구성된 비어 있지 않은 문자열과 양의 정수가 주어지면 고장난 장치가 반환하는 문자열을 출력하십시오.

  • 모든 표준 규칙이 적용됩니다.

  • 입력과 출력은 합리적인 수단을 통해 처리 될 수 있습니다.

  • 이것은 이므로 각 언어에서 가장 짧은 바이트 단위의 코드가 이깁니다.


테스트 사례

입력 
산출

----------

"테스트", 2

TT
TT
ee
ee
ss
ss
tt
tt

----------

"UuU", 3

UUU
UUU
UUU
uuu
uuu
uuu
UUU
UUU
UUU

----------

"A", 5

AAAAA
AAAAA
AAAAA
AAAAA
AAAAA

----------

더 큰 테스트 사례는 여기에서 찾을 수 있습니다 . 행운을 빌어 골프를 즐기세요!



1
줄 바꿈으로 구분 된 문자열 대신 "줄 목록"이 유효합니까?
geokavel

21
흠, 제목에서 "정의되지 않은 행동 남용"이 실제로 작업에 어떻게 나타나는지 모르겠습니다. 정의되지 않은 동작은 없습니다. 작업은 매우 구체적으로 정의 된 동작을 재현하는 것입니다.
Paŭlo Ebermann

3
it fills an NxN square-정확한 진술이 아닙니다.
Magic Octopus Urn

답변:


9

젤리 , 4 바이트

Xcoder의 젤리 학대에서 영감을 받음

x⁹×Y

문자열과 숫자를 명령 줄 인수로 사용하여 결과를 인쇄하는 전체 프로그램

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

어떻게?

순진한 (비 거품 적) 5 바이트는 다음과 같습니다.

x⁹x€Y - Main link: list of characters, s; number, n  e.g. "xyz", 2
 ⁹    - chain's right argument, n                         2
x     - times (repeat each element)                       ['x','x','y','y','z','z']
  x€  - times for €ach                                   [['x','x'],['x','x'],['y','y'],['y','y'],['z','z'],['z','z']]
    Y - join with newlines                                ['x','x','\n','x','x','\n','y','y','\n','y','y','\n','z','z','\n','z','z']
      - as a full program: implicit print
      -   note: this could be submitted as a dyadic link (AKA unnamed function)

씨 Xcoder에 의해 사용되는 남용 (파이썬의는 operator.mulA의 역할을 할 수 str와는 int반복을 str하고, 사용하는 원자 - - 여기에 하나의 문자 ×도 대체 여기에 사용할 수 vectorises는 왼쪽 인자를 WRT)을 x€함께 ×- 전체 프로그램을 산출 :

x⁹×Y - Main link: list of characters, s; number, n  e.g. "xyz", 2
 ⁹   - chain's right argument, n                         2
x    - times (repeat each element)                       ['x','x','y','y','z','z']
  ×  - multiply (vectorises)                             ["xx","xx","yy","yy","zz","zz"]
     -     (note, these "..." are actually strings, something not usually seen in Jelly) 
    Y - join with newlines                                ["xx",'\n',"xx",'\n',"yy",'\n',"yy",'\n',"zz",'\n',"zz"]
      - implicit print

학대에 대한 도전에 대한 남용
Erik the Outgolfer

9

젤리 , 5 바이트

이것이 바로 우리가해야 할 일입니다 ... 정의되지 않은 행동을 남용하십시오! *

×+⁷×⁴

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

* 정의되지 않은 동작× 으로 반복 문자열 사용 에 대해 이야기하고 있습니다. 때로는 평상시보다 행동이 짧습니다. 왜 그렇지 않습니까?


젠장, 잠깐만!
caird coinheringaahing

/ - : 그래도,이 golfed 할 수있는 느낌이 @cairdcoinheringaahing
씨 Xcoder

1
나는 당신의 학대를 다른 5에서 4
Jonathan Allan




3

PowerShell , 31 바이트

param($a,$b)$a|%{,("$_"*$b)*$b}

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

설명:

param($a,$b)                    # Takes input $a (char-array) and $b (integer)
            $a|%{             } # Loop through every character in $a
                   "$_"*$b      # Construct a string of $b length of that character
                 ,(       )*$b  # Repeat that $b times
                                # Implicit Write-Output inserts a newline between elements



2

MATL , 5 바이트

t&Y"!

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

설명

t     % Implicitly input a number, n. Duplicate
&Y"   % Implicitly input a string. Three-input repelem function. Repeats
      % each entry in the first input (s) the specified numbers of times 
      % vertically (n) and horizontally (n). Gives a char matrix
!     % Transpose. Implicit display

2

C ++, 125 123 바이트

aschepler 덕분에 -2 바이트

#include<string>
using s=std::string;s u(s a,int b){s r;for(auto&c:a)for(int i=0;i<b*b;){if(!(i++%b))r+=10;r+=c;}return r;}

+=호출 된 연산자 의 오버로드 char가이 명령어에서 데이터 유형을 사용 하는지 확인하십시오if(!(i++%b))r+=10


2
using s=std::string;typedef std::string s;2 바이트 보다 짧습니다 .
aschepler

2

Japt , 7 바이트

문자열 배열을 출력합니다.

VÆmpVÃy

사용해보십시오 ( -R시각화 목적으로 만 플래그 지정)


설명

문자열의 암시 적 입력 U및 정수 V.

VÆ    Ã

에서 정수 배열을 생성 0하는 V-1과 기능을 각각 통과한다.

mpV

각 문자를 매핑 ( m) U하고 반복 ( r)합니다 V.

y

결과 배열을 전치하고 암시 적으로 출력합니다.



1

J, 15 14 바이트

[:,/]$"1 0~[,[

차선책입니다. 문자의 2D 배열을 반환합니다. 소요 n왼쪽 인자 오른쪽으로 문자열로.

모바일에서는 일반적인 편의 시설이 없습니다.

설명

(오래된 답변)

[:,/(2#[)$"1 0]

$"1 0 각 캐릭터를 재구성

(2#[)n* n행렬.

,/ 행렬을 결합하여 출력을 생성합니다.



@ 마일리 브릴리언트! 나는 그 자신의 대답이 개인적으로 가치가 있다고 말하고 싶습니다.
cole

@ 마일즈 당신을 게시 :)




1

Brainfuck, 103 바이트

,[>,]-[>+<-----]>---[-<<->>]<<[->+<]>[[->+>+<<]>>[-<<+>>]<[<<<[<]>.[>]>>-]++++++++++.[-]<<<[<]>[-]>[>]>

온라인으로 시도하십시오 (동적 메모리를 켜야합니다. 그렇지 않으면 실행되지 않습니다)

참고 : 입력이 약간 다릅니다. 이 코드는 마지막 문자가 반복 횟수의 숫자 인 문자열을받습니다. 따라서 입력은 다음과 같습니다 Test5.

이 코드에는 바인딩되지 않은 테이프가 필요하며 바이트 랩핑 동작에 의존합니다.

언 골프 드 :

,[>,]< Take Input
>-[>+<-----]>--- ASCII 0, to use in next step
[-<<->>]<< Convert ASCII number to raw number by subtracting ASCII 0
[->+<]> Move the number over one to separate it from the phrase
[
  [->+>+<<]>>[-<<+>>]< Copy the number
  [
    <<<[<]> Back to Letter
    . Print Letter
    [>]>>- Back to Counter
  ]
  ++++++++++.[-]< Print the newline
  <<[<]>[-]> Clear Letter
  [>]> Back to Counter
]

1

SOGLOnline commit 2940dbe , 4 바이트

∙ι*I

이것은 특정 커밋, 즉 문자열 배열에서 사용될 때 각 문자를 x 번 반복하여 각 항목을 x 번 반복하여 변경하기 전의 커밋을 위해 이루어 졌습니다. 다음 으로 볼 수있는, 해당 버전없이 온라인 인터프리터는 작동하지 않습니다이다.

커밋을 시도하려면 이것을 다운로드 하고 index.html파일을 열고 프로그램 붙여 넣기 ∙ι*I및 입력에서 다음과 같이 작성하십시오.

Test
2

설명:

∙ι*I
∙     get an array with 2nd input amount of items of the 1st input
 ι    pop one implicit input to cycle back to the number
  *   multiply horizontally each separate character
   I  rotate clockwise

작동하지 않으면 왜 링크입니까?
isaacg

@isaacg 좋은 질문입니다. 먼저 나는 무엇이 바뀌 었는지를 쓰려고했지만 잊었다
dzaima


1

APL (Dyalog) , 8 바이트

왼쪽 인수로 텍스트를 반복하고 오른쪽 인수로 텍스트를 사용합니다.

{⍺⌿⍺/⍪⍵}

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

{… 왼쪽 인수와 오른쪽 인수를 나타내는 } 명명되지 않은 람다

⍪⍵ 텍스트를 1 열 테이블로 만듭니다.

⍺/시간을 수평으로  복제

⍺⌿시간을 세로로  복제


1

Japt , 7 바이트

mpV² òV

문자열 배열을 반환합니다.

온라인으로 사용해보십시오! -R배열을 개행과 결합 하는 플래그로.

설명

mpV² òV     Implicit input of U=string, V=number
m           Map each char in the input string to...
 pV²        Itself repeated V² times
     òV     Cut the resulting string into partitions of length V




0

코 틀린 1.1-99 바이트

fun s(s:String,c:Int)=s.flatMap{p->List(c,{p})}.joinToString("\n"){p->List(c,{p}).joinToString("")}

전체 출력을 문자열로 반환합니다.

1.1은 지원되지 않으므로 TryItOnline을 사용할 수 없습니다

테스트

fun s(s:String,c:Int)=s.flatMap{p->List(c,{p})}.joinToString("\n"){p->List(c,{p}).joinToString("")}

fun main(args: Array<String>) {
    println(s("Hello World", 5))
}

문자열 목록이 출력으로 허용되는 경우 84가됩니다.

fun s(s:String,c:Int)=s.flatMap{p->List(c,{p})}.map{p->List(c,{p}).joinToString("")}

0

PHP, 97 바이트

for($i=0;$i<strlen($s=$argv[1]);$i++)for($j=0;$j<$r=$argv[2];$j++)echo str_repeat($s[$i],$r)."
";

0

매스 매 티카, 49 바이트

(z=#2;Grid[Column/@Table[#,z,z]&/@Characters@#])&

입력

[ "테스트", 4]


0

피스 , 12 바이트

마음이 작지만 아직 도착하지 않았습니다.

VQp*+*Nszbsz

설명:

VQ          For every letter in the first input...
  p         Print without newline...
   *+*Nszsz (The index * int(second input) + newline) * int(the second input)

테스트 스위트


0

클로저 , 82 75 바이트

#(dotimes[x(count %1)](dotimes[y %2](prn(apply str(repeat %2(get %1 x))))))

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

비 압축 :

#(dotimes [x (count %1)]
  (dotimes [y %2]
    (prn
      (apply str
        (repeat %2 (get %1 x))))))

편집 : for 루프를 stdlib 반복 기능으로 대체하여 몇 글자를 줄였습니다.


0

C # (. NET 코어) , 68 + 18 바이트

a=>n=>new int[a.Length*n].Select((x,i)=>Enumerable.Repeat(a[i/n],n))

바이트 수에도 포함됩니다.

using System.Linq;

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

출력은 문자 모음의 모음입니다 (각 줄에 대해 하나의 모음).

설명:

a => n =>                                // Take a string and a number
    new int[a.Length * n]                // Create new collection, 'n' times larger than 'a'
    .Select((x, i) =>                    // Replace every member with
        Enumerable.Repeat(a[i / n], n)   //     a collection of repeated character from 'a', based on index
    )
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.