구불 구불 한 시퀀스


29

이 도전에 대한 Adnan의 모든 크레딧.

내가 가기 전에 나의 마지막 도전 .

태스크

양의 정수 감안할 n경우, n홀수, 반복 /많은 시간을; 경우 n도있다, 반복 \많은 시간을.

테스트 케이스는이 설명보다 훨씬 명확하므로 테스트 케이스를 살펴보십시오.

명세서

테스트 케이스

n output
1 /
2 \\
3 ///
4 \\\\
5 /////
6 \\\\\\

답변:


17

자바 스크립트, 22 바이트

n=>"\\/"[n%2].repeat(n)

익명 함수를 정의합니다.

*Javascript에서 문자열 만 반복하는 경우 한숨


1
마지막으로 올바른 운영자를 찾았습니다
Leaky Nun

@LeakyNun 무슨 소리 야?
DanTheMan

삼항 연산자를 사용하여 캐릭터를 선택 했습니까?
Leaky Nun

@LeakyNun 처음에 그렇습니다. 그러나 채팅을 보면 약 1 분 후에 게시했습니다.
DanTheMan

2
@Jordumus 함수를 변수에 할당 f=n=>...할 수 있습니다 : , 직접 호출 할 수 있습니다 : (n=>...)(5). (당신은 Node.js를 REPL을 사용하는 경우 또는, 당신은 사용할 수 this._있는 마지막 일에 입력 약자)
DanTheMan

16

파이썬, 20 바이트

lambda n:'\/'[n%2]*n

위대하고 단순하며 우아하다 ^ _ ^
ABcDexter


9

펄, 20 바이트

에 +1 포함 -p

STDIN의 입력으로 실행 :

squigly.pl <<< 6

squigly.pl

#!/usr/bin/perl -p
$_=$_%2x$_;y;01;\\/

그것은 내 버전의 Perl 일 수 있습니다 (여전히 5.10입니다). 추가를 추가하지 않으면 오류가 발생합니다. 끝까지. 나는 그것이 세미콜론을 y의 구분자로 사용하고 있기 때문에 문장을 완성하기 위해 하나 더 필요하기 때문에 (그리고 나중에 더 많은 코드 줄이 있으면 두 개가 필요하기 때문)
theLambGoat

@theLambGoat -p옵션을 사용하고 있습니까? 내가 사용 ;정확히 때문에 음역에 -p암시가 ;내가 1 바이트 이상을 절약 할 수 있도록 코드의 끝을. 이것은 최소한 perl 5.6 이후 (아마도 -p옵션이 실제로 존재하는 한) 작동했습니다
Ton Hospel

@ theLambGoat Mm, 나는 그것이 작동하지 않는 perl 5.10의 오래된 redhat을 발견했습니다. 어느 (나는 확실히 그것을 나이가 perls에서 일을하고 있는데 그것은 또한 새로운 perls에서 작동)이 레드햇 패치 또는 그것은 참으로 약 5.10 일을하지 않았다
톤 Hospel

SUSE Enterprise Server 11에서 실행 중이므로 단순히 레드햇이 아닙니다. 그러나 일부 버전에서 작동하는 한 여전히 유효한 대답이어야한다고 생각합니다. (또한 방금 5.08에서 확인했습니다. 현재 액세스 할 수있는 유일한 다른 버전이며 작동하지 않습니다.)
theLambGoat

1
;에 의해 추가 된 그 트릭 -p은 매우 끔찍하고 잘 완료되었습니다.
Dada


7

C #, 42 바이트

string f(int n)=>new string("\\/"[n%2],n);

올바른 문자를 선택한 다음 반복되는 해당 문자로 구성된 새 문자열을 만듭니다 n.


7

PHP, 38 바이트

for(;$i++<$a=$argv[1];)echo'\/'[$a%2];

(가변 38 바이트)

while($i++<$a=$argv[1])echo'\/'[$a%2];

(가변 38 바이트)

<?=str_pad('',$a=$argv[1],'\/'[$a%2]);

(가변 40 바이트)

<?=str_repeat('\/'[($a=$argv[1])%2],$a);



6

J, 10 바이트

#'\/'{~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)

이것은 우리가 원하는 것을 산출하고 끝났습니다.


6

하스켈, 25 바이트

f n=cycle"\\/"!!n<$[1..n]

와 Damien 덕분에 -1 바이트 cycle.


1
f n=cycle"\\/"!!n<$[1..n]
Damien

@Damien 와우, 나는 어떻게 사이클을 잊었습니까.
xnor

모르겠어요 그러나 나는 당신을 한 번 "이길"기회가있어서 기쁘다 :)
Damien

6

Mathematica, 34 32 28 바이트

If[OddQ@#,"/","\\"]~Table~#&

익명의 기능. 정수를 입력으로 받아서 문자 목록을 출력으로 리턴합니다.


사용할 수 있습니다 ~Table~#.
Martin Ender

나는 그것이 10.2에 추가되었다고 생각합니다.
Martin Ender

또한, 나는 당신이 도랑을 풀고 <>""문자 목록을 반환 할 수 있다고 생각합니다 .
Martin Ender

1
@MartinEnder 그들은 또한 10.2 +에 추가 ~Do~Infinity하고 또한 추가해야합니다 ...
LegionMammal978

5

파워 쉘, 30 27 바이트

최신 정보:

param($n)('\','/')[$n%2]*$n

timmydparam 덕분에로 전환했습니다 .


"$("\/"[$args[0]%2])"*$args[0]

또는 약간 더 읽기

("\","/")[$args[0]%2]*$args[0]

테스트:

> 1..10 | % { ./run.ps1 $_ }
/
\\
///
\\\\
/////
\\\\\\
///////
\\\\\\\\
/////////
\\\\\\\\\\

3
PPCG에 오신 것을 환영합니다! 여기에서 다른 PowerShell 사용자를 만나서 반갑습니다. 27 바이트 param($n)대신 $args다음과 같이 입력 대신 몇 바이트를 면도 할 수 있습니다.param($n)('\','/')[$n%2]*$n
AdmBorkBork

5

매스 매 티카, 29 바이트

"\\"["/"][[#~Mod~2]]~Table~#&

Cruelly는 [[1]]함수의 첫 번째 인수를 [[0]]반환하면서 함수 (head) 자체 를 반환하고, "\\""평가 중" 이라는 이상한 유효 함수에 적용되는 사실을 이용합니다 "/".


폼의 어떤 것이 head (index ) 및 element (index ) 인 a[b]일반 표현식 이고 함수는 특별한 종류의 표현식 이라고 생각할 때 약간 이상하지 않습니다 (실제로는 함수가 ' t 표현식은 전혀 없지만, 일반적으로 형식이있는 표현식을 변환하기위한 규칙입니다 . :)a0b1f[x...]
Martin Ender 2016 년

2
이 사이트에서 많은 언어가 남용되는 것을 보았지만 이것이 내가 본 Mathematica의 첫 번째 남용이라고 생각합니다. 잘 했어!
DanTheMan





4

> <> (물고기), 30 바이트

:2%?'/'o1-:?!;30.
30.  >'\'50p

이 언어를 처음 사용했지만 출력의 일부 또는 미러를 흐름의 방향으로 바꾸는 조건부로 /를 사용하여 최소한의 공간을 절약했다고 ​​생각합니다. 그래도 여전히 끔찍하게 비효율적이지만, 아마도 조금이라도 조금 더 줄어들 수 있다고 생각합니다.

입력은 초기 스택이고 출력은 stdout

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


프로그래밍 퍼즐 및 코드 골프에 오신 것을 환영합니다!
Dennis

@Dennis 감사합니다! 환영합니다.
Callum Kerr

4

Dyalog APL , 11 바이트

⎕IO←0많은 시스템에서 기본값이 필요합니다 .

⊢⍴'\/'⊃⍨2|⊢

논쟁 거리

형태 변경 (반복)

'\/'⊃⍨ 에 의해 선택된 문자열 "/"

2|⊢ 인수를 2로 나눌 때의 나눗셈

TryAPL 온라인!


시원한! J. 매우 유사
코너 오브라이언

@ ConorO'Brien 네, 유일한 차이점은 J의 2- 트레인은 후크이고 Dyalog의 atops이므로 명시적인 왼쪽 타인이 필요하다는 것입니다.
Adám

아, 나는 왜 논쟁이 있었는지 궁금했다.
코너 O'Brien

1
마지막으로 모든 문자가 올바르게 렌더링 된 APL 답변!
Cyoce

@Cyoce 그래, SE에서 글꼴을 지정하고 포함시킬 수 있으면 좋겠다.
Adám

3

자바 7, 68 65 바이트

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();
    }
  }
}

산출:

/
\\
///
\\\\
/////
\\\\\\
///////
\\\\\\\\
/////////

안녕 케빈 람다식이 아닌 이유
Vale

@ 베일 하이 베일. 나는 구식 Java 7 프로그래머이기 때문에. :) Java 8 또는 9 답변이 내 답변과 약간 다른 경우 자유롭게 게시하십시오.
Kevin Cruijssen

2
@ 베일 (그는 이상하다 : P)
Shaun Wild

1
난 당신이 변경하면 생각 x=-1;++x<ix=0;x++<i당신이 한 바이트로 줄일 수 있습니다
user902383

1
또한 당신은 대체 할 수 "\\" : "/"와 함께 92:'/')
숀 와일드에게

3

R, 47 46 바이트

n=scan();cat(rep(c("\\","/")[n%%2+1],n),sep="")

R에서는 백 슬래시를 피해야합니다. 인수 sep는 이후에 오기 때문에 완전히 지정해야합니다 .... 따라서 문자를 절약 할 수있는 성가신 기회는 거의 없습니다.

1 바이트를 버는 것에 대한 bouncyball 덕분에.


1
인덱싱을 사용하여 1 바이트를 절약하십시오.n=scan();cat(rep(c('\\','/')[n%%2+1],n),sep='')
bouncyball

3

T-SQL 50 바이트

물론 STDIN여기서는 아니므로 다음 INT과 같이 하드 코딩 된 변수를 가정 해 봅시다 . DECLARE @ INT그러면 해결책은 다음 과 같습니다 .

PRINT IIF(@%2=0,REPLICATE('\',@),REPLICATE('/',@))

3

, 8 바이트

"\/"@aXa

똑바로. 모듈 식 인덱싱을 사용하여 문자 및 문자열 반복을 선택하여 곱하십시오. 온라인으로 사용해보십시오!


이 질문은 Pip, PythJelly 사이의 흥미로운 비교를 제시하며 , 후자는 각각 5 바이트를 기록했습니다. 세 가지 언어 모두 모듈 형 인덱싱 및 문자열 반복을위한 단일 문자 연산자를 사용하여 암시 적 출력을 가지며 문자열에서 백 슬래시를 이스케이프 처리 할 필요가 없습니다. 그러나 두 가지 주요 차이점이 있습니다.

  1. 특정 상황에서 Pyth와 Jelly는 문자열을 정의하기 위해 단 하나의 구분 기호 만 필요합니다.
  2. Pyth와 Jelly는 입력이 코드에서 명시 적으로 표현 될 필요가 없도록 구문을 가지고 있습니다 ( Maltysen이 나에게 설명했듯이 매우 다른 이유로 ).

이러한 기능 중 하나가 Pip 1에 나타나지 않을 것입니다 (불균형 구분 기호의 미학을 좋아하지 않으며 포인트 프리 구문 또는 암시 적 피연산자가 내 표현 식 파서에 너무 외계인 것처럼 보입니다). 세 번째 바이올린을 연주해도 좋습니다. 골프를 칠 때 "가독성"이 매우 상대적이긴하지만이 3 바이트가 Pip 프로그램을 한눈에 이해하기 쉽게 만들어 준다고 주장합니다.

1 Pip의 단일 문자 문자열은 'CJam과 Lisp에서 인용 하여 단일 구분 기호를 사용합니다 .


코드 골프에서 가독성이 플러스인지 확실하지 않습니까? 바이트 비용이 아님 !
GreenAsJade

@ GreenAsJade 많은 사람들이 같은 느낌을 기대합니다. 나는 단지 하나의 구별을 만들 것입니다 : code golf! = golflang design. 이제 언어 디자인에도 같은 원칙 (더 짧을수록 좋습니다)이 적용된다고 주장 할 수 있습니다. 난 그냥 나를 위해, 유용성, 심지어 미학이 있다고 말하고 있습니다 고려 사항.
DLosc

골프 언어를 만들기위한
유용한


pyth에는 암시 적 포인트 프리 구문이 없습니다. 파이썬에서와 거의 같은 방식으로 작동하여 읽을 수는 있지만 짧게 만듭니다. 반면에 언밸런스 분리 문자에 대한 귀하의 의견은 사실입니다
Maltysen




2

SpecBAS-28 바이트

1 INPUT n: ?"\/"(ODD(n)+1)*n

ODDnumber가 홀수이면 1을 반환 한 다음 인덱스로 사용하여 n 번 올바른 문자를 인쇄합니다. SpecBAS 문자열이 문자 1에서 시작하므로 1을 추가해야합니다.


2

자바 8, 56 바이트

(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

실제로 10 바이트

골프 제안을 환영합니다. 온라인으로 사용해보십시오!

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