'abc' ve 'cba'


28

Görevin basit, bir dilde çalıştırıldığında sadece dizgeyi 'abc'çıktıran ve başka bir dilde çalıştırıldığında sadece dizgeyi çıktıran tek bir kod pasajı yaz 'cba'. Program giriş yapmamalıdır.

Bu bir mücadelesi.


4
Bunun bir dupe olduğunu sanmıyorum. Dizenin tersine çevrilmiş olması, iki farklı dizgenin yazdırılmasından yeterince farklıdır. Bunun hemen etkili olacağı gibi, yeniden oylamayacağım, oy kullanmayacağım
Luis Mendo

4
Bu yazıyı yeniden açmak için oy kullandım, çünkü IMO bir String'in ve String'in tersini yazdırıyordu. Bu sorunun üstesinden gelmek için hiçbir cevap önemsizce değiştirilemez. Kendi cevabım, oradaki cevaplarla karşılaştırıldığında ters simetri tekniğini kullanıyor. @LuisMendo ile aynı fikirdeyim.
Bay Xcoder

2
ABCBunun yerine yazdırabiliyor musunuzabc
Oliver Ni

5
Ben, bazı cevaplar gerçeği kullanmak yeniden açmak için oy cbaise abcgeriye; bağlantı , bağlantı , bağlantı , bağlantı , bağlantı , bağlantı , bağlantı , bağlantı , bağlantı
Oliver Ni

2
'ABC've 'CBA'tamam, önde / sondaki boşluk / yeni satırlar tamam ancak her iki çıktı için de aynı olmalıdır
Chris_Rands 10:17

Yanıtlar:



21

MATLAB / Octave, 41 bayt

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

MATLAB içinde randsample(2,2)bir 2 x 1 vektörü sağlar, böylece size(...,2)bir 1. Böylece flip, bir singleton olan ilk boyut boyunca uygulanır, böylece orijinal dize 'abc'görüntülenir:

görüntü tanımını buraya girin

Octave randsample(2,2)1 × 2 vektörü sağlar, böylece size(...,2)bir 2. Böylece flipikinci boyut boyunca uygulanır, yani dize soldan sağa döndürülür:

görüntü tanımını buraya girin


Daha az ilginç versionolanı kullanıyorsanız, bunun birkaç bayt daha kısa olacağını düşünüyorum .
Stewie Griffin

@StewieGriffin Teşekkürler. Bence şimdi değişmek için çok geç. Belki kendin gönder?
Luis Mendo

Hayır, bunun sıkıcı bir versiyonu ... Ayrıca, artık MATLAB yok, bu yüzden test edemem.
Stewie Griffin

15

25 bayt

print(1/2and'cba'or'abc')

Çevrimiçi deneyin! ( Python 2 )

Çevrimiçi deneyin! ( Python 3 )


Kullanarak exityerine -1 bayt print(bu şimdilik her cevap için geçerli olsa da).
notjagan,

@notjagan. exityazdırır stderr, değil mi? Geçerli bir cevap olup olmadığından emin değilim.

@PirateBay STDERR'ye çıkmaya meta konsensüs uyarınca izin verilir .
notjagan,

Zorluk, kod snippet'ini yazıp yazdırıyor, varsayılan kuralları kullanmıyor.
xnor 19


10

-1 bayt ben yaparsanız ==0içine >0ama bu zaten başka cevabı

Python 2 , 26 bayt

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

Çevrimiçi deneyin!


Python 3 , 26 bayt

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

Çevrimiçi deneyin!

1/2verir 0(floordiv) Python 2 ve 0.5Dolayısıyla Python 3'te (truediv), 1/2==0Python 2 Python'dan 3 ve 0 1 ile verir (aslında, boolean, ancak bunlar sadece tamsayılardır), yani 'acbbca'[1::2] => 'cba'Python 3 verilir ve 'acbbca'[0::2] => 'abc'Python verilir 2.


10

Excel / Google Sayfaları, 41 28 27 24 Bayt

"ABC"Excel'de "CBA"arama yapan hücreye ve Google Sayfalarındaki arama yapan hücreye giriş ve çıkış almayan anonim çalışma sayfası formülü

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

Google E-Tablolar’da, M(...)bir takma addır ve otomatik olarak biçimlendirilir T(...)(kısa için Text()). Bu çağrı iletilen değişkenin metin değerini döndürür "CBA". "CBA"hata olarak algılanmaz, bu nedenle "CBA"tarafından döndürülürIfError(...,"ABC")

Excel'de M(...)işlev yoktur ve M(...)bir takma ad değildir ve bu nedenle M("CBA")formülü bulamayan hatayı döndürür #NAME?. Buna IfError(...,"ABC")karşılık gelir ve bu da geri döner "ABC".


Önceki Sürümler, 27, 28, 41 Bayt

Açıklamalar için düzenlemelere bakın

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

1
Temiz! .... Sen kullanarak 2 bayt kaydedebilirsiniz iserryerine iferroryerine "NUMFILE" nin "SYSTEM" kullanarak byte ve 1:=IF(ISERR(INFO("SYSTEM")),"cba","abc")
Adam

8

CJam / 05AB1E , 6 bayt

"abc"R

Çevrimiçi deneyin:

CJam'da nasıl çalışır?

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

05AB1E’de nasıl çalışır?

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

8

@HyperNeutrino'a cevaplarının çoğunu çaldığım için özür dilerim (Henüz yorum yapacak itibarım yok)

Python 2,25 bayt

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

Çevrimiçi deneyin!

Python 3 , 25 bayt

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

Çevrimiçi deneyin!


Aslında bu <1btw.
Outgolfer Erik,

@EriktheOutgolfer Hayır, her iki dil için de
acımasız

@Notjagan önerilen gibi, yerine printile exit(hangi izin bizim kurallarına göre) ve bu nedenle tasarrufu 1 bayt.

3
Cevabınıza ikinci dili eklemelisiniz (Sanırım Python3)
Zacharý

@ Zacharý Teşekkürler, sorunun güncellendiğini bilmiyordum (orijinal sadece python 2 ve pyhon 3 idi)
reffu

8

Vim / Notepad.exe, 10 bayt

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

2
Not defteri bir programlama dili değil, +1'dir.
Jakob

7

JavaScript (NodeJS) ve PHP, 46 bayt

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

abcJS'de ve cbaPHP'de yazdırır .

JS'yi çevrimiçi deneyin!

PHP'yi çevrimiçi olarak deneyin! (TIO’nun HTML yorumlarını gizlemediğini unutmayın ( <!--... -->)


1
Düğümde nasıl <!--yorumlanır?
Esolanging Fruit

@ Challenger5 Görünüşe göre, tıpkı //( kaynak ) gibi bir satırlık yorum olarak yorumlanıyor . Tarayıcı JS'sinde de bu şekilde çalışır.
Justin Mariner,

6
Bu çok garip ...
Esolanging Meyve

--> blah blahJavaScript tercümanında geçerli bir yorumdur, sadece kaldırabilirsiniz//
tsh

1
@JustinMariner Düğüm v8.1.3'te test ettim. Ayrıca, ES6 şartnamesi Ek B'de tanımlanan davranış, yani ES6'yı destekleyen tüm tarayıcılar yorum olarak kabul etmelidir.
tsh

6

Python / Befunge, 20 18 bayt

@Karhell sayesinde 2 bayt kurtarıldı

print("abc")# ,,,@

Çevrimiçi deneyin! Python için

Python print("abc")daha sonra bir yorum görüyor .

Çevrimiçi deneyin! Befunge için

Tüm NOPS ve yararsız komutları kaldırarak Befunge görür "abc",,,@hangi koyar a, bve cyığın üzerinde ve daha sonra (sonuncu - ilk çıkar) yazdırır.


Geç ısırdı ama değiştirerek iki bayt tıraş edebilirsiniz >:#,_@tarafından,,,@
karhell

#,,<@Bunun yerine bir tane daha kaydedin
Jo King


5

Excel / Google Sayfaları, 28 bayt

Yalnızca Excel'de var olan bir işlevi kullanan @TaylorScott'tan ilham alan, yalnızca Google Sayfalarında bulunan daha da kısa bir işlev buldum. Dizeleri döndürmek için uygun şekilde tasarlanmıştır:

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

Nasıl çalışır

Google E yılında join([arg1], arg2, arg3,...argk)sıralamak olacak arg2 > - ARGK isteğe belirtilen ayırıcı kullanılarak ARG1 . Bu durumda, başarılı bir şekilde "cba" döndürür.

Excel'in joinişlevi yoktur , bu nedenle iferrorbir sorun görür ve "abc" döndürür


1
İlk gönderim - umarım doğru yapıyorumdur ....
Adam,

Güzel çözüm :)
Taylor Scott,


4

Java 8 ve C, 95 bayt

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

Java 8'de deneyin - "abc" ile sonuçlanır.
C ile deneyin - "cba" ile sonuçlanır.

Açıklama:

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

Yukarıdaki Java ile işaretlenmiş kodda görebileceğiniz gibi, ilk satır şu nedenlerden dolayı bir yorumdur //ve C kodu aşağıdakilerden kaynaklanan bir yorumdur /* ... */:

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

Emin değilim doğrusu, C-vurgulama etkinleştirmek çünkü nasıl lang-cJava ile aynı vurgulama sonuçları .. Ama //\sonuçta Java kodu olan bir sonraki satır, dışarı duracağım:

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

4

Python 2 / Python 3, 28 bayt

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

Python'da 2 int(1/2*4)-1değerlendirir -1ve yazdırır cba. - TiO

Python 3'te değerlendirilen 1baskılar abc. - TiO


2
Programlama Bulmacaları ve Kod
Golf'e

4

C ve C ++, 115 , 78 , 58 , 56 bayt

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

Meydan okuyucu sayesinde 78 byte .

58 bayt, aschepler sayesinde .

56 byte, hvd sayesinde

Deneyin - C ++!

Deneyin - C!


1
1) #ifdefTek bir tane yapmak için iki s'yi daraltabilirsiniz . 2) İçindeki boşluğu kaldırabilirsiniz #include <stdio.h>. 3) Değişebilirsin printf("%s",için puts(. Çevrimiçi deneyin!
Esolanging Fruit,

2
Ya da her zaman eski güzel sizeof('x')>1?"abc":"cba"hile vardır.
aschepler

@ Challenger5 Yorumunuz için teşekkürler
Ivan Botero

@aschepler Püf noktası için teşekkürler, değişiklikleri 58 bayt yaptım :)
Ivan Botero

1
sizeof'ın işleneni parantez gerektirmez, bu bir işlev değildir.
HVD

4

R / Cubix , 20 bayt

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

R - Çevrimiçi deneyin!

Cubix - Çevrimiçi deneyin!

R için, cat("abc")daha sonra utanmaz yorumların kötüye kullanılması. Cubix için

    c a
    t (
" a b c " ) # u
@ o ; o ; o ( ;
    . .
    . .
  • "abc" A, b ad c'yi istifin üzerine iter
  • )# C artışı, yığındaki eleman sayısını iter
  • u Sağa U dönüşü
  • ;( Sayımı kaldır, c azaltın
  • o;o;o@ Cba çıkışı ve çıkışı

Sayıyı yığında iter


2
cat(Cubix'in tamamen görmezden geldiği bir şekilde garip bir şekilde memnunum .
Giuseppe



3

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

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


3

Ly / > <> , 20 19 bayt

"abc"&&ov
;     oo<

> <> İle deneyin!

Ly ile dene!

Bu diller, Ly'nin <>> dayandığı gibi çok benzer. Ancak, Ly'nin 2D uygulaması yoktur ve burada yorumladığım &farklı yorumlamalar yapar .

Her iki dil abcde yığına iterek başlayacaktır .

> <> İçin &komut, değerleri register'a kaydırır ve kaydırır. Art arda iki tanesi kayıt cihazına bir değer itecek ve daha sonra doğrudan bir NOP olacak şekilde geri alacaktır.

Ly için, &bir komutun tüm yığında işlevini yerine getirmesini sağlayan bir değiştiricidir.

oher iki dil için de aynı anlama gelir, ancak &Ly tarafından değiştirildiğinden , tüm yığını basar ve yazdırır abc. > <> 'Da, yalnızca çıkacaktır c(yukarıdan aşağıya doğru yazdırıldığı gibi)

vLy'deki bir NOP olup, onu atlar ve doğrudan ;yürütme işlemini bitirir. > <> bunun yerine IP'yi aşağıya göndererek bir işaretçi olarak görecektir.

Sonra IP sola göndererek, başka bir ok vurur. Burada, çıktı ve iki oişaretleri karşılamaktadır .ba

EDIT: Bir bayt kaydedildi (ve düzeltildi> <> kilitlenme)


1
;İkinci satıra taşıyarak bir bayt kaydedebilirsiniz . Bu aynı zamanda,> <> IP'nin tekrar sarılıp ikinci satıra geçmemesi ve bir hataya neden olması avantajına sahiptir.
Esolanging Fruit,

olmamalı; > <> için? daha fazla bayt almazdı, yalnızca boşluklardan birini değiştirin
Yıkılabilir Limon

Ne dersiniz "abc"&&ooo;? Ly'nin çökmesine neden olur, ancak yalnızca "abc" yazdıktan sonra.
Bir ağaç

… Veya "abc"&&o!;o<çökmesini önlemek istiyorsanız, 1 ekstra byte.
Bir ağaç



2

05AB1E ve 2sable , 6 bayt

…CBAžR

Baskılar ABC(OP izin verildiğini söyledi) 05AB1E'de ve CBA2sable'da, 2sable'ın 05AB1E'ye benzer olduğu ancak žR2sable'ı terk ettikten sonra 05AB1E'ye ilave edildiği gerçeğini kullanarak.

Çevrimiçi deneyin! (05AB1E)

Çevrimiçi deneyin! (2sable)


Spesifikasyon, "abc" veya "cba" olması gerektiğini belirtir. Sözüme göre, bunun geçersiz olduğunu söyleyebilirim, ancak OP’yi sorabilirim.
HyperNeutrino,

OP'ye sordum ve cevap vermedi. Bu geçersiz olduğu ortaya çıkarsa, kaldırırım.
Oliver Ni

@OliverNi Umm, geçersizse, sadece bir lbtw ekleyebilirsiniz .
Outgolfer Erik,

2

PHP + JavaScript, 29 28 bayt

Bu, PHP'nin '0'(tam sayı ile aynı 0) sahte olduğu şeklinde yorumladığı için çalışır, ancak JavaScript basitçe boş olmayan bir dize olduğunu varsayar.

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

Bu -rPHP ile çalışmak içindir . Javascript'te, konsola yapıştırmanız yeterlidir.


Beni 1 bayttan kurtardığı için @ Marustin Mariner'a teşekkürler !


Bunun "0"yerine de kullanabilirsiniz +![]: 0PHP'de (falsy) olur ve JS'de bir dizedir (truthy).
Justin Mariner,

@JustinMariner Haklısın, ama bu 1 bayt daha uzun.
Ismael Miguel,

1
Bir bayt daha kısa değil mi? +![]?print(abc):alert('cba');->"0"?alert('cba'):print(abc);
Justin Mariner,

@JustinMariner OH !!! Bu taraftan !!! Evet, 1 bayt daha kısa. Teşekkür ederim!
Ismael Miguel,


2

Julia ve Octave / Matlab, 27 bayt

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

Octave, her iki 'a've "a"aynı dizeyi temsil nedenle 'a'=="a"doğrudur. Ancak, Julia'da, 'a'tek karakterli bir karakter iken tek karakterli "a"bir dizedir. Julia'da "cba"çıktı.

Ungolfed versiyonu:

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

2

Perl / Yakut, 18 bayt

Yakut

print'abc'.reverse

printİpte cbaaradığımız gibi .reverse.

Çevrimiçi deneyin!

Perl

print'abc'.reverse

prints abcsonucu ile birleştirilmiş reversevarsayılan eserleri ile hangi $_hangi boştur ve bu yüzden hiç fark etmez.

Çevrimiçi deneyin!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.