우리는 한동안 (5 일 정확한) 문자열 문제 가 없었 으므로 한번가 봅시다.
문자열 s
과 양의 정수가 주어지면의 n
모든 n
요소를 가져 와서 s
반복 n
하고 다시 넣습니다 s
.
예를 들어 if n = 3
및 s = "Hello, World!"
이면 세 번째 문자는 모두 Hl r!
입니다. 그런 다음 각 문자를 반복 n
하여 생성 HHHlll rrr!!!
합니다. 그런 다음 원래 문자를 반복 버전으로 바꾸어 최종 제품을 만듭니다.HHHellllo, Worrrld!!!
귀하의 언어로 가능한 가장 짧은 코드로이 작업을 수행해야합니다!
규칙
- 이것은 코드 골프 이므로 바이트 단위의 가장 짧은 코드가 승리합니다.
n
길이보다 작고s
0보다 커야합니다.- 의 첫 번째 문자는
s
곳이다n
번째 문자에서 가져, 항상 반복되는n
시간을 s
인쇄 가능한 ASCII의 (코드 포인트로 구성됩니다0x20 (space)
에를0x7E (~)
)
테스트 사례
s, n => output
"Hello, World!", 3 => "HHHellllo, Worrrld!!!"
"Code golf", 1 => "Code golf"
"abcdefghijklm", 10 => "aaaaaaaaaabcdefghijkkkkkkkkkklm"
"tesTing", 6 => "ttttttesTingggggg"
"very very very long string for you to really make sure that your program works", 4 => "vvvvery veryyyy verrrry loooong sssstrinnnng foooor yoooou toooo reaaaally makeeee surrrre thhhhat yyyyour proggggram workkkks"
답변
젤리 , 3 바이트
Ḣs×
입력은 s, n 으로 간주됩니다 .
작동 원리
Ḣs× Main link. Argument: s, n
Ḣ Head; yield s.
This pops the list, leaving [n] as the main link's argument.
s Split s into chunks of length n.
× Multiply each chunk by [n], repeating its first element n times.
답변
젤리 , 6 5 바이트
누수로 인한 -1 바이트 (Python의 문자열 곱셈 사용)
×Jm¥¦
문자열과 숫자라는 두 가지 명령 줄 인수를 허용하고 결과를 인쇄하는 전체 프로그램.
어떻게?
×Jm¥¦ - Main link: list of characters, s; number, n e.g. ['g','o','l','f','e','r'], 2
¦ - sparse application:
¥ - ...to indices: last two links as a dyad:
J - range of length of s [1,2,3,4,5,6]
m - modulo slicing by n (every nth entry) [1,3,5]
× - ...action: multiply ["gg",'o',"ll",'f',"ee",'r']
- implicit print >>> ggollfeer
답변
자바 스크립트 (ES6), 46 바이트
카레 구문으로 입력을 (s)(n)
받습니다.
s=>n=>s.replace(/./g,(c,i)=>c.repeat(i%n?1:n))
테스트 사례
답변
답변
C # (. NET 코어) , 84 82 바이트
n=>m=>{var s="";for(int i=0;i<n.Length;)s+=new string(n[i],i++%m<1?m:1);return s;}
답변
05AB1E , 8 7 바이트
@Emigna 덕분에 -1 바이트
ôʒć²×ì?
설명
ôʒć²×ì? Arguments s, n ("Hello, World!", 3)
ô Split s into pieces of n (["Hel", "lo,", ...])
ʒ Filter (used as foreach)
ć Extract head ("Hel" -> "el", "H" ...)
²×ì Repeat n times and prepend ("el", "H" -> "HHHel" ...)
? Print without newline
답변
PowerShell , 51 바이트
param($a,$n)-join($a|%{($_,("$_"*$n))[!($i++%$n)]})
입력을 char
배열 $a
및 숫자 로 취합니다 $n
. 루프 스루 $a
및 각 반복 은 의사 삼항으로의 색인을 기반으로 현재 문자 $_
또는 현재 문자에을 곱한 값을 출력합니다 $n
. 지수는 증분 기반 $i
과 모듈로 중 두 가지 중에서 선택합니다 $n
. 그런 다음 해당 문자가 -join
다시 연결되고 문자열이 파이프 라인에 남습니다. 출력은 암시 적입니다.