'abc'와 'cba'


28

당신의 작업은 간단합니다. 한 언어로 'abc'실행될 때 문자열 만 출력 하고 다른 언어로 실행될 때 문자열 만 출력하는 단일 코드 스 니펫을 작성하십시오 'cba'. 프로그램은 입력하지 않아야합니다.

이것은 도전입니다.


4
나는 이것이 속박이라고 생각하지 않습니다. 문자열이 반전된다는 사실은 두 개의 다른 문자열을 인쇄하는 것과 충분히 다릅니다. 하지만 즉시 재개하지는 않겠지 만, 즉각 효력을 발휘할 것입니다.
Luis Mendo

4
String과 String의 반전을 인쇄하는 IMO가 2 가지와 크게 다르기 때문에이 게시물을 다시 열었습니다. 이 과제에 맞게 답을 사소하게 수정할 수는 없습니다. 내 대답은 대답과 비교할 때 역 대칭 기술을 사용합니다. @LuisMendo에 동의합니다.
Mr. Xcoder

2
당신은 인쇄 할 수 ABC대신abc
올리버 니켈

5
다시 열기 위해 투표를합니다. 일부 답변은 사실 cbaabc거꾸로 사용됩니다. 링크 , 링크 , 링크 , 링크 , 링크 , 링크 , 링크 , 링크 , 링크
Oliver Ni

2
'ABC'그리고 'CBA'선행 / 후행 공백 / 줄 바꿈은 괜찮지 만 두 출력 모두 동일해야합니다.
Chris_Rands

답변:



21

MATLAB / 옥타브, 41 바이트

disp(flip('abc',size(randsample(2,2),2)))

매트랩에서 randsample(2,2)2 × 1 벡터를 제공합니다, 그래서 size(...,2)이다 1. 따라서 flip단일 치수 인 첫 번째 치수를 따라 적용되므로 원래 문자열 'abc'이 표시됩니다.

enter image description here

옥타브에서 randsample(2,2)1 × 2 벡터를 제공합니다, 그래서 size(...,2)이다 2. 따라서 flip두 번째 차원을 따라 적용됩니다. 즉, 문자열이 왼쪽에서 오른쪽으로 뒤집 힙니다.

enter image description here


덜 흥미로운 version변형 을 사용하면 이것이 몇 바이트 더 짧을 것이라고 생각합니다 .
Stewie Griffin

@StewieGriffin 감사합니다. 지금 변경하기에는 너무 늦었다 고 생각합니다. 직접 게시 하시겠습니까?
Luis Mendo

아니,이 버전의 지루한 버전입니다 ... 또한 더 이상 MATLAB이 없어서 테스트 할 수 없습니다.
Stewie Griffin

15

exit대신 -1 바이트를 사용하여 print(현재 모든 답변에 적용되지만).
notjagan

@notjagan. exit에 인쇄 stderr하지 않습니까? 그것이 올바른 대답인지 확실하지 않습니다.

메타 합의에 따라 @ThePirateBay를 STDERR로 출력 할 수 있습니다.
notjagan

도전 과제는 코드 스 니펫 및 인쇄이지만 기본 규칙을 사용하지 않는다고 말합니다.
xnor


10

-1 바이트를 걸 경우 ==0>0그러나 그것은 이미 다른 대답

파이썬 2 , 26 바이트

print('acbbca'[1/2==0::2])

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


파이썬 3 , 26 바이트

print('acbbca'[1/2==0::2])

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

1/2부여합니다 0(floordiv) 파이썬 (2)에 0.5따라서 파이썬 3의 (truediv) 1/2==0파이썬 2 파이썬 3 0에서 1주는 (실제로 논리 값은, 그러나 그것들은 단지 정수)이므로 'acbbca'[1::2] => 'cba'파이썬 3 부여하고는 'acbbca'[0::2] => 'abc'파이썬 주어진다 2.


10

Excel / Google 스프레드 시트, 41 28 27 24 바이트

"ABC"Excel "CBA"의 호출 셀 및 Google 스프레드 시트의 호출 셀에 입력 및 출력 을 받지 않는 익명의 워크 시트 수식

=IfError(M("CBA"),"ABC")

Google 스프레드 시트에서 M(...)별칭은 자동 형식화되어 T(...)(의 줄임말 Text())입니다. 이 호출은 전달 된 변수의 텍스트 값을 반환합니다 "CBA". "CBA"그래서, 오류로 적발되지 "CBA"의해 반환IfError(...,"ABC")

Excel에는 M(...)함수 M(...)가 없으며 별칭이 아니므 M("CBA")로 수식을 찾을 수 없음 오류을 반환합니다 #NAME?. 이것에 의해 잡히고 IfError(...,"ABC"), 그 결과로 돌아옵니다 "ABC".


이전 버전, 27, 28, 41 바이트

설명은 편집을 참조하십시오

=If(IsErr(A()),"ABC","CBA")
=If(IsErr(GT()),"ABC","CBA")
=IfError(If(Info("NUMFILE"),"ABC"),"CBA")

1
산뜻한! .... 당신은 사용하여 2 바이트를 저장할 수 있습니다 iserr대신 iferror대신 "NUMFILE"의 "SYSTEM"을 사용하여 바이트와 1 :=IF(ISERR(INFO("SYSTEM")),"cba","abc")
아담

8

CJam / 05AB1E , 6 바이트

"abc"R

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

CJam에서 작동하는 방식

"abc"    Push this string
R        Push variable R, predefined to the empty string
         Implicitly display stack

05AB1E에서 작동하는 방식

"abc"    Push this string
R        Reverse
         Implicitly display top of the stack

8

그의 답변 대부분을 훔친 것에 대해 @HyperNeutrino에게 사과하면서 (아직 언급 할 평판이 없습니다)

파이썬 2 , 25 바이트

print('acbbca'[1/2>0::2])

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

파이썬 3 , 25 바이트

print('acbbca'[1/2>0::2])

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


음, 실제로 <1btw입니다.
아웃 골퍼 에릭 18

@EriktheOutgolfer 아니오 두 언어 모두에 대해 진실입니다
HyperNeutrino

@notjagan 제안, 당신은 대체 할 수 printexit(하는 우리의 규칙에 의해) 때문에 저장 1 바이트.

3
대답에 두 번째 언어를 추가해야합니다 (Python3).
Zacharý

@ Zacharý 감사합니다, 나는 문제가 업데이트되었다는 것을 몰랐다 (원본은 파이썬 2와
피혼

8

Vim / Notepad.exe, 10 바이트

cbaabc<esc><backspace><backspace><backspace>

2
메모장은 프로그래밍 언어가 아니라 +1입니다.
Jakob

7

JavaScript (NodeJS) 및 PHP, 46 바이트

<!--
strrev=console.log//--><?=
strrev("abc");

abcJS와 cbaPHP로 인쇄합니다 .

JS 온라인을보십시오!

온라인으로 PHP를 사용해보십시오! (TIO는 HTML 주석을 숨기지 않습니다 ( <!--... -->)


1
<!--노드 에서는 어떻게 해석됩니까?
Esolanging 과일

@ Challenger5 그것은 분명히 //( source ) 와 같은 한 줄 주석으로 해석됩니다 . 브라우저 JS에서도 그렇게 작동합니다.
저스틴 마리너

6
그건 이상하다 ...
Esolanging 과일

--> blah blah일부 JavaScript 인터프리터에서 유효한 주석입니다.//
tsh

1
@ JustinMariner 노드 v8.1.3에서 테스트했습니다. ES6 사양 부록 B에 정의 된 동작은 ES6 를 지원 하는 모든 브라우저 가이를 주석으로 수락해야 함을 의미합니다 .
tsh

6

Python / Befunge, 20 18 바이트

@karhell 덕분에 2 바이트 절약

print("abc")# ,,,@

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

파이썬 print("abc")은 주석을 본다 .

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

모든 NOP를 쓸모 명령을 제거하는 비 펀지는보고 "abc",,,@있는 풋 a, b하고 c스택에 다음 (마지막에 - 첫번째 아웃)을 인쇄합니다.


조금 늦었지만 다음과 같이 대체 >:#,_@하여 2 바이트를 줄일 수 있습니다.,,,@
karhell

#,,<@대신 하나 더 저장
Jo King

5

Python 2 및 Python 3, 42 바이트

try:exec("print'abc'")
except:print('cba')

온라인으로 사용해보십시오! (파이썬 2)

온라인으로 사용해보십시오! (파이썬 3)

다른 것을 시도 할 것이라고 생각했습니다 ...


가장 짧지 않지만 일반적인 프레임 워크 인이 프레임 워크를 사용하여 조금 단축 할 수 있습니다.try:long;print('abc')
Chris_Rands

또는 더 나은try:cmp;print('abc')
Chris_Rands


그건 내가 여전히 인쇄 주위에 필요한 괄호 () 쓴 게 아니에요
Chris_Rands

5

Excel / Google 스프레드 시트, 28 바이트

Excel에만 존재하는 함수를 사용한 @TaylorScott에서 영감을 얻어 Google 스프레드 시트에만 존재하는 더 짧은 함수를 발견했습니다. 편리하게 문자열을 반환하도록 설계되었습니다.

=iferror(join(,"cba"),"abc")

작동 원리

Google 시트에 join([arg1], arg2, arg3,...argk)연결할 것이다 ARG2 > - argk을 임의로 지정된 구분자 사용 ARG1를 . 이 경우 "cba"가 성공적으로 반환됩니다.

Excel에 join기능 이 없으므로 iferror문제가 발생하여 "abc"를 반환 함


1
내 첫 번째 제출-내가 잘하고 있기를 바랍니다 ....
Adam

좋은 해결책 :)
Taylor Scott

4

CJamGaia , 8 바이트

'c'b'a]$

CJam에서 사용해보십시오!

가이아에서 사용해보십시오!

설명

두 언어 모두 문자 목록을 정의합니다.

CJam에서는 $정렬이됩니다 abc.

Gaia에서는 $목록을 하나의 문자열로 결합 하여을 제공 cba합니다.


Gaia를 골프 언어 목록에 추가했습니다 . 세부 정보가 잘못된 경우 알려 주시기 바랍니다.
ETHproductions

@ETHproductions 괜찮아 보입니다.
비즈니스 고양이

4

자바 8 & C, 95 바이트

//\
interface a{static void main(String[]s){System.out.print("abc"/*
main(){{puts("cba"/**/);}}

Java 8로 시도하여 "abc"를 생성하십시오.
C로 시도하여 "cba"를 생성하십시오.

설명:

//\
interface a{static void main(String[]s){System.out.print("abc"/*
main(){{puts("cba"/**/);}}

위의 Java 강조 표시 된 코드에서 볼 수 있듯이 첫 번째 줄은 주석으로 인한 주석 //이고 C 코드는 주석으로 인한 주석 /* ... */입니다.

interface a{static void main(String[]s){System.out.print("abc");}}

//\
interface a{static void main(String[]s){System.out.print("abc"/*
main(){{puts("cba"/**/);}}

lang-cJava와 동일한 강조 표시로 인해 C-highlighting을 올바르게 활성화하는 방법을 잘 모르겠습니다 . 그러나 //\Java 코드 인 다음 행을 주석 처리하여 다음을 수행합니다.

main(){{puts("cba");}}

4

Python 2 / Python 3, 28 바이트

print('abc'[::int(1/2*4)-1])

파이썬 2에서는 인쇄물을 int(1/2*4)-1평가 -1합니다 cba. - 산화 티타늄

파이썬 3에서는 1그렇게 프린트를 평가 합니다 abc. - 산화 티타늄


2
프로그래밍 퍼즐 및 코드 골프에 오신 것을 환영합니다
Евгений Новиков

4

C 및 C ++, 115 , 78 , 58 , 56 바이트

#include<stdio.h>
main(){puts(sizeof('x')>1?"abc":"cba");}

challenger5 덕분에 78 바이트 .

aschepler 덕분에 58 바이트 .

hvd 덕분에 56 바이트

사용해보십시오-C ++!

사용해보십시오-C!


1
1) 두 #ifdefs를 축소하여 하나를 만들 수 있습니다 . 2)에서 공간을 제거 할 수 있습니다 #include <stdio.h>. 3) 당신은 변경할 수 있습니다 printf("%s",puts(. 온라인으로 사용해보십시오!
Esolanging 과일

2
또는 항상 좋은 오래된 sizeof('x')>1?"abc":"cba"트릭이 있습니다.
aschepler

@ Challenger5 댓글 주셔서 감사합니다
Ivan Botero

@aschepler 트릭을 주셔서 감사합니다, 나는 58 바이트를 변경했습니다 :)
Ivan Botero

1
sizeof의 피연산자는 괄호가 필요하지 않으며 함수가 아닙니다.
hvd

4

R / Cubix , 20 바이트

cat("abc")#u@o;o;o(;

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

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

R의 경우, cat("abc")뻔뻔한 의견 남용. Cubix의 경우

    c a
    t (
" a b c " ) # u
@ o ; o ; o ( ;
    . .
    . .
  • "abc" 스택에 a, b ad c를 밀어 넣습니다.
  • )# c를 증가시키고 스택의 요소 수를 푸시합니다.
  • u 오른쪽으로 U 턴
  • ;( 카운트를 제거하고 c를 줄입니다.
  • o;o;o@ 출력 CBA 및 종료

스택에서 숫자를 푸시합니다


2
나는 cat(Cubix에 의해 완전히 무시되는 방식으로 이상하게 기쁘게 생각합니다 .
Giuseppe



3

C (gcc) C ++ (g ++), 59 바이트

#include<stdio.h>
main(){puts("abc\0cba"+(sizeof(' ')&4));}

3

핵분열 / > <> , 11 바이트

!R"abc"ooo;

핵분열 온라인 시도

분열에서 입자는에서 시작하여 R인쇄합니다 abc.

> <> 온라인 시도

> <>에서 IP는 왼쪽 상단에서 시작합니다. !다음 명령어를 건너 뛰고 "abc"스택에서 [a, b, c]를 푸시합니다. ooo그런 다음 세 번 튀어 나와 인쇄합니다 cba.

두 프로그램 모두 ;


3

Ly / > <> , 20 19 바이트

"abc"&&ov
;     oo<

> <>로 사용해보십시오!

Ly와 함께 사용해보십시오!

이 언어는 Ly가> <>를 기반으로하기 때문에 매우 유사합니다. 그러나 Ly는 2D 실행이 없으며 &다르게 해석하므로 여기에서 활용했습니다.

두 언어 모두 abc스택 으로 푸시 하여 시작합니다 .

> <>의 경우 &명령은 레지스터로 값을 이동합니다. 행에서 두 개는 레지스터로 값을 푸시 한 다음 다시 NOP로 바로 가져갑니다.

Ly의 &경우 명령이 전체 스택에서 기능을 수행하게하는 수정 자입니다.

o는 두 언어에 대해 동일한 것을 의미하지만 &Ly에서 수정 되었으므로 전체 스택을 인쇄하여 출력 abc합니다. > <>에서는 c위에서 아래로 인쇄 되므로 출력 만됩니다.

vLy의 NOP이며이를 건너 뛰고 바로 ;실행으로 이동합니다. > <>는 대신 IP 주소를 아래쪽으로 보내는 포인터로 취급합니다.

그런 다음 다른 화살표를 누르면 IP가 왼쪽으로 전송됩니다. 여기서는 두 개의 o표시, 출력 b및을 충족시킵니다 a.

편집 : 바이트를 저장하고 고정> <> 충돌


1
;두 번째 줄로 이동하여 바이트를 저장할 수 있습니다 . 또한> <> IP가 랩핑되지 않고 두 번째 줄을 다시 통과하지 않아 오류가 발생한다는 이점이 있습니다.
Esolanging 과일

없어야한다; > <>? 더 이상 바이트를 사용하지 않고 공백 중 하나만 교체하십시오
Destructible Lemon

어때요 "abc"&&ooo;? "abc"를 인쇄 한 후에 만 ​​Ly가 충돌합니다.
나무가 아님

… 또는 "abc"&&o!;o<충돌을 피하려면 1 바이트의 추가 바이트가 필요합니다.
나무가 아님



2

05AB1E2sable , 6 바이트

…CBAžR

인쇄 ABC05AB1E과 (OP가 허용되었다 말했다) CBA2sable가 05AB1E하지만 유사 있다는 사실을 이용하여 2sable에서의žR 2sable이 버려진 후 05AB1E에 추가 .

온라인으로 사용해보십시오! (05AB1E)

온라인으로 사용해보십시오! (2 가능)


사양에는 "abc"또는 "cba"여야한다고 명시되어 있습니다. 내 말에 따르면, 이것이 유효하지 않다고 말하지만 OP를 요청할 수 있습니다.
HyperNeutrino

나는 OP에게 물었고 그는 대답하지 않았다. 이것이 유효하지 않은 것으로 판명되면 제거하겠습니다.
Oliver Ni

@OliverNi 음, 유효하지 않은 경우 lbtw를 추가하면 됩니다.
Outgolfer Erik

2

PHP + JavaScript, 29 28 바이트

이것은 PHP가 '0'(정수와 같은) 잘못된 것으로 해석하기 때문에 작동 0하지만 JavaScript는 단순히 비어 있지 않은 문자열이라고 가정합니다.

'0'?alert('cba'):print(abc);

이것은 -rPHP 에서 실행됩니다 . Javascript에서는 콘솔에 붙여 넣으십시오.


1 바이트 절약 해 주신 @Justin Mariner 에게 감사드립니다 !


"0"대신에 사용할 수도 있습니다 +![]: 0PHP에서는 (거짓)되고 JS에서는 문자열 (거짓)입니다.
저스틴 마리너

@JustinMariner 네 말이 맞지만 1 바이트 더 길다.
Ismael Miguel

1
1 바이트 더 짧지 않습니까? +![]?print(abc):alert('cba');->"0"?alert('cba'):print(abc);
저스틴 마리너

트윗 담아 가기 그런 식으로!!! 예, 1 바이트 더 짧습니다. 고맙습니다!
Ismael Miguel


2

JuliaOctave / Matlab, 27 바이트

if'a'=="a""abc"else"cba"end

옥타브에서 두 'a'"a"같은 문자열을 나타냅니다 따라서 'a'=="a"사실이다. 그러나 Julia에서는 'a'단일 문자 인 반면 "a"한 문자 문자열입니다. Julia에서는 "cba"출력입니다.

언 골프 버전 :

if 'a'=="a"
  "abc"
else
  "cba"
end

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