「abc」および「cba」


28

タスクは簡単です。1つの言語で'abc'実行すると文字列のみが出力され、別の言語で実行すると文字列のみが出力される単一のコードスニペットを記述します'cba'。プログラムは何も入力しないでください。

これは挑戦です。


4
これはだましだとは思わない。文字列が逆になっているという事実は、2つの異なる文字列を印刷するのとは十分に異なります。私はしません(投票する)ことが即効性を持っていると同じように、けれども、再度開く
ルイス・Mendo

4
IMOが文字列と文字列の逆を印刷するのは2つの異なる文字列とはかなり異なるため、私はこの投稿を再開することに投票しました。この課題に合うように答えを簡単に変更することはできません。私自身の答えは、そこにある答えと比較したとき、逆対称のテクニックを使用しています。@LuisMendoに同意します。
ミスターXcoder

2
ABC代わりに印刷できますかabc
オリバーNi

5
私は再開することに投票しますが、いくつかの答えは事実cbaabc逆向きであると使用しています。リンクリンクリンクリンクリンクリンクリンクリンクリンクリンク
オリバーNi

2
'ABC'そして'CBA'
行頭

回答:



21

MATLAB /オクターブ、41バイト

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

MATLABではrandsample(2,2)、2×1のベクトルが得られるため、size(...,2)です1。したがってflip、シングルトンである最初の次元に沿って適用されるため、元の文字列'abc'が表示されます。

enter image description here

Octave randsample(2,2)では1×2のベクトルを与えるため、size(...,2)です2。したがってflip、2番目の次元に沿って適用されます。つまり、文字列は左から右に反転します。

enter image description here


あまり面白くないversionバリアントを使用する場合、これは数バイト短くなると思います。
スティーヴィーグリフィン

@StewieGriffinありがとう。今変更するには遅すぎると思います。たぶん自分で投稿しますか?
ルイスメンドー

いや、これは退屈なバージョンです...また、MATLABはもう持っていないので、テストすることはできません。
スティーヴィーグリフィン

15

exit代わりに-1バイトを使用しますprint(ただし、現時点ではすべての回答に適用されます)。
-notjagan

@notjagan。exitに印刷しstderrますか?有効な答えであるかどうかはわかりません。

@ThePirateBay STDERRへの出力は、メタコンセンサスごとに許可されています。
-notjagan

課題は、コードスニペットと印刷ですが、デフォルトのルールを使用していないということです。
-xnor


10

-1バイト私が行った場合==0>0それは、すでに別の答えです

Python 2、26バイト

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

オンラインでお試しください!


Python 3、26バイト

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

オンラインでお試しください!

1/2与え0パイソン2(floordiv)及び0.5(truediv)はPython 3にこのように、1/2==0(実際には、ブール値が、それらは単なる整数である)のPython 2にはPython 3で1と0を与え、これ'acbbca'[1::2] => 'cba'はPython 3のために与えられ、'acbbca'[0::2] => 'abc'Pythonのために与えられます。 2。


10

Excel / Google Sheets、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に彼の答えのほとんどを盗んだことをおaびします(まだコメントする評判はありません)

Python 2、25バイト

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

オンラインでお試しください!

Python 3、25バイト

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

オンラインでお試しください!


ええと、実際には<1です。
エリックアウトゴルファー

@EriktheOutgolferいいえ、それは両方の言語にとって真実です
-HyperNeutrino

@notjaganが示唆したように、(私たちのルールで許可されている)に置き換えてprint、1バイト節約できます。exit

3
あなたの答えに2番目の言語を追加する必要があります(Python3私は仮定)
ザカリー

@Zacharýありがとう、私は問題が更新されたことに気づかなかった(オリジナルはpython 2とpyhon 3のみだった)
reffu

8

Vim / Notepad.exe、10バイト

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

2
メモ帳はプログラミング言語ではありませんが、+ 1です。
ヤコブ

7

JavaScript(NodeJS)およびPHP、46バイト

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

abcJSおよびcbaPHPで印刷します。

JSをオンラインでお試しください!

PHPをオンラインでお試しください!(TIOはHTMLコメントを隠さないことに注意してください(<!--... -->


1
<!--Node ではどのように解釈されますか?
エソランジングフルーツ

@ Challenger5これは明らかに//source)のように1行のコメントとして解釈されます。ブラウザJSでも同様に機能します。
ジャスティンマリナー

6
それは...奇妙である
Esolangingフルーツ

--> blah blahJavaScriptインタープリターの有効なコメントです。削除するだけでよい//
-tsh

1
@JustinMariner Node v8.1.3でテストしました。また、ES6仕様の付録Bで定義されている動作は、ES6 をサポートするすべてのブラウザーがコメントとして受け入れる必要があることを意味します
tsh

6

Python / Befunge、20 18バイト

@karhellのおかげで2バイト節約

print("abc")# ,,,@

オンラインでお試しください!Python用

Pythonが見る print("abc")コメントをます。

オンラインでお試しください!Befungeの

Befungeは、すべてのNOPと無用のコマンドを削除すると見て"abc",,,@いるプットabおよびcスタックにしてから(の最後の-最初のアウト)、それらを印刷します。


少し遅れていますが、交換することにより、2つのバイトオフ剃ることができます>:#,_@,,,@
karhell

#,,<@代わりにもう1つ保存
ジョーキング

5

Python 2およびPython 3、42バイト

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

オンラインでお試しください!(Python 2)

オンラインでお試しください!(Python 3)

私は別の何かを試してみると思いました...


私はこの1つ、ない最短が、かなり一般的なフレームワークを好む、使用してビットを短縮することができますtry:long;print('abc')
Chris_Rands

またはそれ以上try:cmp;print('abc')
-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
私の最初の提出-私はそれを正しくやっていることを願っています
アダム

良い解決策:)
テイラースコット

4

CJamおよびGaia、8バイト

'c'b'a]$

CJamで試してください!

ガイアで試してみてください!

説明

両方の言語で、これは文字のリストを定義します。

CJamでは、$並べ替えが行われるため、になりabcます。

Gaiaでは$、リストを1つの文字列に結合し、を与えcbaます。


ゴルフ言語リストにガイアを追加しました。詳細が間違っている場合はお知らせください。
-ETHproductions

@ETHproductionsは私には良さそうに見えます。
ビジネス猫

4

Java 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"/**/);}}

As you can see in the Java-highlighted code above, the first line is a comment due to //, and the C-code is a comment due to /* ... */, resulting in:

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"/**/);}}

Not sure how to correctly enable C-highlighting, because lang-c results in the same highlighting as Java.. But //\ will comment out the next line, which is the Java-code, resulting in:

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

4

Python 2 / Python 3, 28 bytes

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

In Python 2 int(1/2*4)-1 evaluates to -1 and so prints cba. - TiO

In Python 3 it evaluates 1 so prints abc. - TiO


2
Welcome to Programming Puzzles and Code Golf
Евгений Новиков

4

C and C++, 115, 78, 58, 56 bytes

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

78 bytes, thanks to challenger5.

58 bytes, thanks to aschepler.

56 bytes, thanks to hvd

Try it - C++!

Try it - C!


1
1) You can collapse the two #ifdefs to make a single one. 2) You can remove the space in #include <stdio.h>. 3) You can change printf("%s", to puts(. Try it online!
Esolanging Fruit

2
Or there's always the good old sizeof('x')>1?"abc":"cba" trick.
aschepler

@Challenger5 Thanks for the comment
Ivan Botero

@aschepler Thanks for the trick, i've made the changes 58 bytes :)
Ivan Botero

1
sizeof's operand does not need parentheses, it's not a function.
hvd

4

R/Cubix, 20 bytes

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

R - Try it online!

Cubix - Try it online!

For R, cat("abc") then shameless abuse of comments. For Cubix

    c a
    t (
" a b c " ) # u
@ o ; o ; o ( ;
    . .
    . .
  • "abc" Pushs a, b ad c onto the stack
  • )# Increment the c, pushs number of element in stack
  • u U-turn to the right
  • ;( Remove the count, Decrement the c
  • o;o;o@ Output cba and exit

Pushs the number on in stack


2
I am strangely pleased by the way that cat( is totally ignored by Cubix.
Giuseppe



3

C (gcc) C++ (g++), 59 bytes

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

3

Fission / ><> , 11 bytes

!R"abc"ooo;

Try Fission Online

In Fission, a particle starts at R and prints abc.

Try ><> Online

In ><>, the IP starts at the top-left. ! skips the next instruction, and "abc" pushes [a,b,c] on the stack. ooo then pops and prints three times, giving cba.

Both programs end at ;


3

Ly / ><>, 20 19 bytes

"abc"&&ov
;     oo<

Try it with ><>!

Try it with Ly!

These languages are very similar, as Ly is based off ><>. However, Ly does not have 2D execution and interprets & differently, which I took advantage of here.

Both languages will start by pushing abc to the stack.

For ><>, the & instruction moves values to and fro the register. Two in a row will push a value to the register and then take it straight back, essentially a NOP.

For Ly, & is a modifier that makes an instruction perform its function on the entire stack.

o means the same thing for both languages, but since it is modified by & in Ly, it will print the whole stack, outputting abc. In ><>, it will only output c (as it is printed from the top down)

v is a NOP in Ly, which skips it and goes straight to ;, ending execution. ><> will instead treat it as a pointer, sending the IP downwards.

It then hits another arrow, sending the IP left. Here, it meets two o signs, outputting b and a.

EDIT: Saved a byte (and fixed ><> crashing)


1
You can save a byte by moving the ; to the second line. This also has the benefit that the ><> IP doesn't wrap around and go through the second line again, which causes an error.
Esolanging Fruit

shouldn't there be a ; for ><>? it wouldn't take any more bytes, just replace one of the spaces
Destructible Lemon

How about "abc"&&ooo;? It makes Ly crash, but only after printing "abc".
Not a tree

…or "abc"&&o!;o< for 1 extra byte, if you want to avoid crashing.
Not a tree



2

05AB1E and 2sable, 6 bytes

…CBAžR

Prints ABC (OP said it was allowed) in 05AB1E and CBA in 2sable, using the fact that 2sable was similar to 05AB1E but the žR was added to 05AB1E after 2sable was abandoned.

Try it online! (05AB1E)

Try it online! (2sable)


The specification states that it must be "abc" or "cba". By my word, I'd say that this is invalid, but I can ask OP.
HyperNeutrino

I asked the OP and he hasn't responded. If this turns out to be invalid, I will remove it.
Oliver Ni

@OliverNi Umm, if it's invalid you can just append a l btw.
Erik the Outgolfer

2

PHP + JavaScript, 29 28 bytes

This works because PHP interprets '0' (same as the integer number 0) as being falsy, while JavaScript assumes it is simply a non-empty string which is truthy.

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

This is meant to run with -r on PHP. In Javascript, just paste it in the console.


Thanks to @Justin Mariner for saving me 1 byte!


You could also use "0" instead of +![]: it becomes 0 (falsy) in PHP and is a string (truthy) in JS.
Justin Mariner

@JustinMariner You're right, but that's 1 byte longer.
Ismael Miguel

1
Isnt it one byte shorter? +![]?print(abc):alert('cba'); -> "0"?alert('cba'):print(abc);
Justin Mariner

@JustinMariner OH!!! That way!!! Yes, it is 1 byte shorter. Thank you!
Ismael Miguel


2

Julia and Octave/Matlab, 27 bytes

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

In Octave, both 'a' and "a" represent the same string, therefore 'a'=="a" is true. However, in Julia, 'a' is a single character while "a" is a one-character string. In Julia, "cba" is the output.

Ungolfed version:

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

2

Perl / Ruby, 18 bytes

Ruby

print'abc'.reverse

prints cba as we're calling .reverse on the string.

Try it online!

Perl

print'abc'.reverse

prints abc concatenated with the result of reverse which by default works on $_ which is empty and so makes no difference.

Try it online!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.