이 도전에 대한 Adnan의 모든 크레딧.
내가 가기 전에 나의 마지막 도전 .
태스크
양의 정수 감안할 n
경우, n
홀수, 반복 /
많은 시간을; 경우 n
도있다, 반복 \
많은 시간을.
테스트 케이스는이 설명보다 훨씬 명확하므로 테스트 케이스를 살펴보십시오.
명세서
- 합리적인 입 / 출력 형식
- 표준 허점이 적용됩니다.
테스트 케이스
n output
1 /
2 \\
3 ///
4 \\\\
5 /////
6 \\\\\\
내가 가기 전에 나의 마지막 도전 .
양의 정수 감안할 n
경우, n
홀수, 반복 /
많은 시간을; 경우 n
도있다, 반복 \
많은 시간을.
테스트 케이스는이 설명보다 훨씬 명확하므로 테스트 케이스를 살펴보십시오.
n output
1 /
2 \\
3 ///
4 \\\\
5 /////
6 \\\\\\
답변:
n=>"\\/"[n%2].repeat(n)
익명 함수를 정의합니다.
*
Javascript에서 문자열 만 반복하는 경우 한숨
f=n=>...
할 수 있습니다 : , 직접 호출 할 수 있습니다 : (n=>...)(5)
. (당신은 Node.js를 REPL을 사용하는 경우 또는, 당신은 사용할 수 this._
있는 마지막 일에 입력 약자)
에 +1 포함 -p
STDIN의 입력으로 실행 :
squigly.pl <<< 6
squigly.pl
#!/usr/bin/perl -p
$_=$_%2x$_;y;01;\\/
-p
옵션을 사용하고 있습니까? 내가 사용 ;
정확히 때문에 음역에 -p
암시가 ;
내가 1 바이트 이상을 절약 할 수 있도록 코드의 끝을. 이것은 최소한 perl 5.6 이후 (아마도 -p
옵션이 실제로 존재하는 한) 작동했습니다
;
에 의해 추가 된 그 트릭 -p
은 매우 끔찍하고 잘 완료되었습니다.
putchar(92-n%2*45)
같은 길이입니다.
ị⁾/\x
온라인으로 사용해보십시오! 또는 모든 테스트 케이스를 확인하십시오.
ị⁾/\x
ị⁾/\ modular-indexing into the string "/\"
x repeat
Ø^
바이트보다 짧은 바이트는 주목할 가치가 ⁾/\
있습니다.
#'\/'{~2|]
이것은 다음과 같이 구성된 6 열 동사입니다.
# ('\/' {~ 2 | ])
이 사이의 후크 #
와 ('\/' {~ 2 | ])
; 후크는으로 (f g) y
확장 y f (g y)
되므로으로 확장되어 y # (... y)
단일 문자의 경우 y
문자 목록을 생성합니다 .
두 번째 부분은 다음으로 구성된 5 트레인입니다.
'\/' {~ 2 | ]
이것은 두 개의 포크로 평가됩니다.
'\/' {~ (2 | ])
내부 포크 2 | ]
는 계수 2입니다. 따라서 외부 포크는 다음과 같습니다.
'\/' {~ mod2
어떤 소요 ( {~
)을 MOD2 지수 ( mod2
문자열에서) /
.
그런 다음 위의 후크를 사용하십시오.
y # (apt char)
이것은 우리가 원하는 것을 산출하고 끝났습니다.
If[OddQ@#,"/","\\"]~Table~#&
익명의 기능. 정수를 입력으로 받아서 문자 목록을 출력으로 리턴합니다.
~Table~#
.
<>""
문자 목록을 반환 할 수 있다고 생각합니다 .
~Do~Infinity
하고 또한 추가해야합니다 ...
최신 정보:
param($n)('\','/')[$n%2]*$n
timmydparam
덕분에로 전환했습니다 .
"$("\/"[$args[0]%2])"*$args[0]
또는 약간 더 읽기
("\","/")[$args[0]%2]*$args[0]
테스트:
> 1..10 | % { ./run.ps1 $_ }
/
\\
///
\\\\
/////
\\\\\\
///////
\\\\\\\\
/////////
\\\\\\\\\\
param($n)
대신 $args
다음과 같이 입력 대신 몇 바이트를 면도 할 수 있습니다.param($n)('\','/')[$n%2]*$n
"\\"["/"][[#~Mod~2]]~Table~#&
Cruelly는 [[1]]
함수의 첫 번째 인수를 [[0]]
반환하면서 함수 (head) 자체 를 반환하고, "\\"
"평가 중" 이라는 이상한 유효 함수에 적용되는 사실을 이용합니다 "/"
.
a[b]
일반 표현식 이고 함수는 특별한 종류의 표현식 이라고 생각할 때 약간 이상하지 않습니다 (실제로는 함수가 ' t 표현식은 전혀 없지만, 일반적으로 형식이있는 표현식을 변환하기위한 규칙입니다 . :)a
0
b
1
f[x...]
:2%:"\/"rm:?jbw
:2% Input mod 2…
:"\/"rm …is the index of the element in string "\/",…
:?j …element that we juxtapose Input times to itself…
bw …and print to STDOUT after removing one slash/backslash
ri_"\/"=*
ri e# Read input and convert to integer N.
_ e# Duplicate N.
"\/"= e# Use N as cyclic index into "\/", giving '\ for even and '/ for odd inputs.
* e# Repeat N times.
:2%?'/'o1-:?!;30.
30. >'\'50p
이 언어를 처음 사용했지만 출력의 일부 또는 미러를 흐름의 방향으로 바꾸는 조건부로 /를 사용하여 최소한의 공간을 절약했다고 생각합니다. 그래도 여전히 끔찍하게 비효율적이지만, 아마도 조금이라도 조금 더 줄어들 수 있다고 생각합니다.
입력은 초기 스택이고 출력은 stdout
⎕IO←0
많은 시스템에서 기본값이
필요합니다 .
⊢⍴'\/'⊃⍨2|⊢
⊢
논쟁 거리
⍴
형태 변경 (반복)
'\/'⊃⍨
에 의해 선택된 문자열 "/"
2|⊢
인수를 2로 나눌 때의 나눗셈
void c(int i){for(int x=0;x++<i;)System.out.print(i%2<1?92:'/');}
@ user902383 및 @SeanBean 덕분에 3 바이트가 절약 되었습니다 .
마찬가지로 이 대답에 , 가장 짧은 코드 골프 루프 및 인쇄에 보인다. 재귀 적이며
void c(int i){System.out.print(new String(new char[i]).replace("\0",i%2<1?"\\":"/"));}
더 길어 보입니다.
언 골프 및 테스트 코드 :
class M{
static void c(int i){
for(int x = 0; x++ < i;){
System.out.print(i % 2 < 1
? 92
: '/');
}
}
public static void main(String[] a){
for(int i = 0; i < 10; i++){
c(i);
System.out.println();
}
}
}
산출:
/
\\
///
\\\\
/////
\\\\\\
///////
\\\\\\\\
/////////
x=-1;++x<i
에 x=0;x++<i
당신이 한 바이트로 줄일 수 있습니다
"\\" : "/"
와 함께 92:'/'
)
n=scan();cat(rep(c("\\","/")[n%%2+1],n),sep="")
R에서는 백 슬래시를 피해야합니다. 인수 sep
는 이후에 오기 때문에 완전히 지정해야합니다 ...
. 따라서 문자를 절약 할 수있는 성가신 기회는 거의 없습니다.
1 바이트를 버는 것에 대한 bouncyball 덕분에.
n=scan();cat(rep(c('\\','/')[n%%2+1],n),sep='')
"\/"@aXa
똑바로. 모듈 식 인덱싱을 사용하여 문자 및 문자열 반복을 선택하여 곱하십시오. 온라인으로 사용해보십시오!
이 질문은 Pip, Pyth 및 Jelly 사이의 흥미로운 비교를 제시하며 , 후자는 각각 5 바이트를 기록했습니다. 세 가지 언어 모두 모듈 형 인덱싱 및 문자열 반복을위한 단일 문자 연산자를 사용하여 암시 적 출력을 가지며 문자열에서 백 슬래시를 이스케이프 처리 할 필요가 없습니다. 그러나 두 가지 주요 차이점이 있습니다.
이러한 기능 중 하나가 Pip 1에 나타나지 않을 것입니다 (불균형 구분 기호의 미학을 좋아하지 않으며 포인트 프리 구문 또는 암시 적 피연산자가 내 표현 식 파서에 너무 외계인 것처럼 보입니다). 세 번째 바이올린을 연주해도 좋습니다. 골프를 칠 때 "가독성"이 매우 상대적이긴하지만이 3 바이트가 Pip 프로그램을 한눈에 이해하기 쉽게 만들어 준다고 주장합니다.
1 Pip의 단일 문자 문자열은 '
CJam과 Lisp에서 인용 하여 단일 구분 기호를 사용합니다 .
code golf
! = golflang design
. 이제 언어 디자인에도 같은 원칙 (더 짧을수록 좋습니다)이 적용된다고 주장 할 수 있습니다. 난 그냥 나를 위해, 유용성, 심지어 미학이 있다고 말하고 있습니다 고려 사항.
{<\ />[$_%2]x$_}
for 1..6 {
say $_, {<\ />[$_%2]x$_}( $_ )
}
1/
2\\
3///
4\\\\
5/////
6\\\\\\
(i,j)->{for(j=i;j-->0;)System.out.print(i%2<1?92:'/');};
@Kevin Cruijssen에게 고급 답변을 보내 주셔서 감사합니다.
public static void main(String[] args) {
BiConsumer<Integer, Integer> consumer = (i, j) -> {
for (j = i; j-- > 0;) {
System.out.print(i % 2 < 1 ? 92 : '/');
}
};
consumer.accept(5, 0);
consumer.accept(1, 0);
consumer.accept(8, 0);
}
골프 제안을 환영합니다. 온라인으로 사용해보십시오!
;'\'/2(%I*
작동 원리
Implicit input of n
; Duplicate n
'\'/ The strings "/" and "\"
2(% n mod 2
I If n mod 2, then "/", else "\"
* Multiply by n. Implicit print at the end.