Kodunuzu geriye doğru yazdırın - geri


83

Kendi kaynak kodunu geriye doğru yazdıran bir program, bir başka deyişle bir eniuq yazın .

Puanlama:

  • İnternetten veri çekme kullanıyorsanız +50.
  • Kendi kaynak kodunuzu okursanız +25.
  • Karakter başına +1 puan
  • En düşük puan kazanır.

Kurallar:

  • Başka dosyalar kullanmamak (örneğin reverse.txt)
  • Minimum kod uzunluğu iki karakterdir.
  • Programınız bir palindrom olamaz.

1
Görünüşe bu daha önce yapılmıştı , sadece "hayır palindrom" kuralı olmadan.
Iszi

3
Bu puanlar ikramiye mi yoksa ceza mı? Bir şeyin ceza mı yoksa bonus mu olduğunu belirtmeniz gerekir, çünkü +10"aslında ondan daha fazla 10 karakter içeriyormuş gibi puanla" veya "kodun geçmeyen 10 karakterden daha fazla olabileceği anlamına gelebilir" puanlanacak "ya da diğer yorumlar.
AJMansfield

7
@ AJMansfield En düşük puan, + x'in ceza alacağı, -x'in bonus olacağı anlamına gelir.
Iszi

9
O zaman sahip olduğum tek soru, neden internetten veri çekmek, kaynak dosyayı okumaktan daha büyük bir ceza veriliyor?
AJMansfield

4
Woohoo, sıcak ağ soruları listesinde birincilik: D Sitemizin daha fazla dikkat etmesi gerekiyor ...
Doorknob

Yanıtlar:


69

GolfScript - 2


1

(yani , newline karakteri \n1nerede \n)

Çıktı:

1

(yani 1\n)


Ilmari'den alıntı yapmak için :

GolfScript otomatik olarak çıkışın sonuna yeni satır ekler

Böylece bir sayının takip ettiği bir yeni satır, ardından bir sayının yeni bir satır tarafından yazdırılması gerekir.


14
+1 Hiçbir şeyin Mathematica çözümünü yenebileceğini düşünmedim.
Kaya

26
Oldukça sıkıcı bir çözüm ...
theonlygusti

@theonlygusti Golf yazısı, whaddya bekliyoruz ...
Redwolf Programları

96

ha? , 5 karakter

!hcuO

Aslında nasıl çalıştığı hakkında hiçbir fikrim yok, ancak tercümanı indirirseniz ve yazarsanız !hcuO, o zamanOuch!

Bunu çalıştırmak için, programı böyle yürütmeniz gerekir:

huh.exe !hcuO

Aslında adında bir dosyayı arayacak !hcuO, ancak yok, bu yüzden çıktılarOuch!


93
Anlamadığınız bir şeyler yazmak için +1
Cruncher

30
Kendi kodunuzun nasıl çalıştığını anlamamanız biraz ironik değil, aynı zamanda tasarım gereği kodunuzu da anlamamız gerekmiyor.
Iszi

@Izi Bu şaka.
AJMansfield

9
huh?Doğru kullandığınızdan emin değilim , ancak uygun belgeleri bulmakta zorlanıyorum. Kullanımın olması amaçlanmış huh.exe <path to source code>ve Ouch!geçersiz bir yol için döndürülmüş görünüyor . Kodunuzu gerçek bir dosyaya koymayı deneyin ve bu dosyayı argüman olarak besleyin huh?ve ne olacağını görün. Notes.txtBazı yorumlar içeren bir dosya oluşturduğunu görmek de ilginç .
Iszi

8
Tamam, bu şey bana sadece anladığını düşündüğünü söyledi ama ben bir şey olduğunu görmedim Belki de birincil sistemimde onunla oynamayı bırakmalıyım.
Iszi

85

Mathematica, 3 karakter

a 2

a 2a2 kez anlamına gelir . Yani cevap 2 a.


2
Birisi iki karakterli bir çözüm bulamazsa bu muhtemelen kazanacak.
Ike

22
Aslında iki karakterli bir çözüm biliyorum. Ayrıca Mathematica: 1#. Çıktı #1.
alephalpha

7
@alephalpha: O zaman bunu bir cevap olarak göndermelisin!
ProgramFOX

65

H9 + , 13 karakter

!dlrow ,olleH

Web sayfası söylediği gibi olmayan tüm karakterler H, 9ya +görmezden, yani programım yazdırırHello, world!


30
Çılgın ezoterik dillerin tek ve tek pratik yararı, bu çılgın sorulara cevap vermektir.
totymedli

Bu sorular böyle olsaydı daha pratik olurdu.
kojiro

1
Bu oldukça zeki lanetli!
theonlygusti

40

Javascript: 34 karakter

reifitnedi detcepxenU :rorrExatnyS

çıktılar SyntaxError: Unexpected identifier, en azından Chrome konsolunda


8
Hata kötüye kullanımı yoluyla sistemi kötüye kullanmak akıllıca kullanımı
WallyWest

2
Siz bayım, günümü yaptınız: D
major-mann

4
Değil orijinal bir fikir zaten orada bir cevap piton 2. Bu konuda
o0' .

1
@Lohoris Üzgünüm, bunu görmedim
scrblnrd3

1
Mozilla Firefox'ta Firebug konsolu: tnemetats erofeb ; gnissim :rorrExatnyS=> SyntaxError: missing ; before statement.
kenorb

27

Python, 43 41

_=']0~::[_%%_ tnirp;%r=_';print _%_[::~0]


20

TI-BASIC, 2

i2

iHayali sayı nerede .

çıktılar 2i


1
Bu sadece bir PRGM içinde değil, ana ekranda çalışır.
kernigh

8
@kernigh Denediniz mi? İyi çalışıyor. (TI-BASIC programı son deyimi, bir ifade olarak değerlendirilirse, bunun sonucu yerine program sonlandırıldığında 'Done' arasında basılır)
AJMansfield

18

TEMEL, 22 12 7 karakter

:-)

1 enil ni rorre xatnyS

EDIT: Programa hemen modda girme izniniz varsa, bu daha sonra rorre xatnyS(12 karakter) azaltılabilir .

BBC BASIC'de sadece 7 karaktere ihtiyacınız var:

ekatsiM

13

C ++ 472 karakter

Çok fazla karakter var ama c tabanlı bir dilde daha basit bir yol düşünemiyorum.

#include<iostream>
#include<string.h>
#define p(t) std::cout<<'}'<<';'<<')'<<strrev(&std::string(#t)[0])<<t;
char* strrev(char*p){char*t=p;char*q=p;while(q&&*q)++q;for(--q;p<q;++p,--q)*p=*p^*q,*q=*p^*q,*p=*p^*q;return t;}
int main(){p("(p{)(niam tni};t nruter;q*^p*=p*,q*^p*=q*,q*^p*=p*)q--,p++;q<p;q--(rof;q++)q*&&q(elihw;p=q*rahc;p=t*rahc{)p*rahc(verrts *rahc;t<<)]0[)t#(gnirts::dts&(verrts<<')'<<';'<<'}'<<tuoc::dts )t(p enifed#>h.gnirts<edulcni#>maertsoi<edulcni#");}

13

darbe

$ dnuof ton dnammoc :found :hsab-
-bash: dnuof: command not found

Uzunluk: 31 karakter.


sh

$ dnuof ton dnammoc :found :hs-
sh: dnuof: command not found

Uzunluk: 29 karakter.

Bu bir Linux dağıtımında işe yaramadı, ama OSX'de çalıştı.


tcsh

$ .dnuof ton dnammoC :found.
.dnuof: Command not found.

Uzunluk: 26 karakter.


csh

% .dnuof ton dnammoC :found.
.dnuof: Command not found.

Uzunluk: 26 karakter.


Kazanan:

ksh

$ dnuof ton :found :hsk
ksh: dnuof: not found

Uzunluk: 21 karakter.


Yukarıdakilerin tümü * unix tabanlı işletim sistemlerinde çalışmalıdır.


32
Benim için işe yaramıyor, adında bir emir vardnuof
Kroltan

8
Eklemeyi unuttum, dnuofkurulu olan dağıtımlarda çalışmaz (her ne ise). Kahretsin bilgisayar korsanları.
kenorb

5
Hahaha, adında bir emir var dnuofmı? : D ne yapar?
Doorknob

11

GolfScript, 12 karakter

"-1%.`"-1%.`

Bu kod çift tırnaklı dizgiyi alır "-1%.`", tersine çevirir ( -1%), çoğaltır ( .) ve `ikinci kopyayı kaldırır ( ) etrafındaki çift tırnakları geri yükler.

Önceki giriş (13 karakter):

{`'.~'+-1%}.~

8-Char Quine'ın göre {'.~'}.~gelen Bu yanıt ; Çıktıyı dizmek ve tersine çevirmek için ekstra 5 karakter gerekir.

Ps. GolfScript'in otomatik olarak çıkışın sonuna yeni bir satır eklediğini unutmayın. Bu, çıktının bir parçası olarak sayılırsa, ilgili yeni satır, çıktısını etkilemeden kodun her iki sürümüne de ek bir karaktere karşılık hazırlanabilir.


10

Befunge 98 - 10 karakter

"8k,'!1+,@

Bu, tercümanınızın "eklenmiş bir boşluk ekledikten sonra sarılmış satırları yorumlamaması durumunda işe yarar . Tercümanınız sarılmış çizgileri böyle yorumlarsa, bu 11 karakterli çözüm işe yarar ( çünkü bir dizgede yazılan çift boşluklar tek olarak yorumlanır ):

"9k,'!1+,@ 

gCeza olmadan kullanabilirsem , bunlar da işe yarar (sırasıyla 7 ve 8 karakter):

"5k,g,@

ve

"6k,g,@ 

9

Ruby, 60

puts(2,s=<<2.chop.reverse,s)
puts(2,s=<<2.chop.reverse,s)
2

Klasik bir Ruby quine dayanarak.


Heredocları iyi kullanmak.
Jon Purdy

9

Perl, 41

$_=q{print~~reverse"\$_=q{$_};eval"};eval

Eski 52 karakter cevabı (27 + 25 ceza)

open+0;print ~~ reverse <0>

Kendi kaynağını okur, tersini bir skalaya kaydeder ve yazdırır.


1
scalarOperatör ile değiştirilebilir ~~. Ancak, kendi kaynak kodunuzu okumak için puanınıza +25 eklemeniz gerekir.
breadbox

@breadbox not edildi
smcg

+1. Shell çözümü gibi bir şey göndermek üzereydim :, $_='say"lave;\047",~~reverse,"\047=_\$"';evalama çözümünüz daha kısadır :-) Kullanarak 39 karaktere kadar golf oynayabileceğinizi unutmayın say. Umarım ezoterik garipliklerin hepsini yenersin :-)
Tomas

@Tomas değiştirmekte öneriyorsunuz printile say? Bu hiçbir şeyi yazdırmamakla bitiyor.
smcg

Perl'i -Mfeature=sayseçenek ile çalıştırdın mı?
Tomas, 15

9

Fisyon , 6 bayt

Normal quine ile aynı uzunlukta olan nadir bir jeneralize kın vakası :

"LO+!'

Bu fikir normal quine ile aynıdır, ancak sol Ltarafa bir atom kullanıyoruz (başlangıçtan itibaren ), böylece baskı modu kodu ters sırada hareket ettirir.


8

J: 26

Standart sorgulama (26 karakter) : bir fonksiyon tanımlayarak ve kendi tanımını geçirerek, tırnak işaretleri halinde:

|.(,],2#{:)'|.(,],2#{:)'''

Muhtemelen daha kısa yapılabilir.

J-özel (33 karakter) : bir değişkeni tanımlayarak ve değişkenin hangi dosyada tanımlandığını sorarak, yani bu durumda, o dosyanın içeriğini yazdırarak:

1!:2&2|.1!:1(4!:4 a=:<'a'){4!:3''

Bir komut dosyasından kaydedilmeli ve çalıştırılmalıdır (örneğin REPL'de değil, çünkü sorunun cevabı "argümanınız bir dosyada tanımlanmadı" dır, bu nedenle okunacak dosya yoktur).


2
İkincisi, kendi dosyayı okumak için + 25 ikramiyesini almalıdır.
Johannes Kuhn

2
@JohannesKuhn: Penaltı, ama evet.
jazzpi

1
"Bonus" kulağa daha hoş geliyor.
Johannes Kuhn

7

> <> , 25 bayt

Bunun henüz yapılmamasına şaşırdım. :)

...yhsif sllems gnihtemoS

Kodu buraya yapıştırın ve çalıştırın.

.haşhaş, Atlama komuttur xve yyığın kapalı ve IP'yi hareketli (x, y)kod kutusunda. Bu durumda, yığın boştur, yani dilin tek hata mesajı yazdırılıyor:

Something smells fishy...

1
En iyi cevap
Insane

7

Mikroscript , 11 bayt

Bunu yapmak zorunda kaldım.

0"Caxq"Caxq

Şaşırtıcı bir şekilde, bu aslında dilin bilinen en kısa gerçek yüzgeçinden daha kısa. qve aaksi halde eşittir, ancak qyapmazken tırnak işaretleri ekler a.


5

JavaScript jQuery 119 92 74 70 karakter

alert($("#answer-16051 pre code").text().split("").reverse().join(""))

Minitech'in yorumlarda önerdiği gibi şimdi jQuery kullanıyorum ve el ile sarmalanıyorum bu yazıdaki diğer blok bloklarından korkmadan <pre><code>kullanabilirim text(). El ile sarma, <h4>test ettiğimde kromla uyumsuzdu, bu nedenle şimdi çoğu tarayıcıda çalışması gerekiyor.

Bu program, bu sayfadan çalıştırıldığında, kod bloğunu doğrudan yukarıda bulur, içeriğini tersine çevirir ve bir uyarı kutusuna koyar.

Doğrulamak için yeterince kolay, sadece dev konsola yapıştırın.


Bu sadece bir işlev kullanmaktan çok daha uzundur. Ve jQuery kullanmalısınız (bu sayfada) ya da en azından querySelectorzaten…
Ry-

@ minitech bahşiş için teşekkürler, bir süredir değiştirdim querySelector. JQuery olasılığına bakmak istiyorum, ancak çözmem biraz zaman alacak gibi görünüyor.
AJMansfield

@ minitech tamam, jQuerybahşiş için teşekkürler . (Ben sadece dün javascript öğrenmeye başladım.)
AJMansfield

Bu çözümü sevdim; kutunun dışında düşünmek.
theonlygusti

4

PHP, 41 karakter (+25)

Ödevi doğru anladım mı bilmiyorum. Ama burada bir PHP denemek:

while(!isset($s) || $s) echo isset($s) ? array_pop($s) : ($s = str_split(file_get_contents(__FILE__)) and null);

düzenleme: bu çok daha kısa olabilir:

echo strrev(file_get_contents(__FILE__));

Ama bu kadar basit olabileceğinden, muhtemelen sorulan şey bu değildir ...



Koşuyu tıklattığımda, bir sürü işe yaramaz saçmalık alıyorum (işte bunun kısa bir parçası >? ;)llun dna ))__ELIF__(f$(tilps_rts = s$( : )s$(pop_yarra ? )s$(tessi ohce )s$ || )s$(tessi!(elihw ;"stnetnoc_"=.f$ ;'teg_elif'=f$ php?<>?}};ESLAF nruter;"ec6x\i66x\02x\e47x\96x\rw :; çok daha fazlası var). Ayrıca, karakter sayınızı da ekleyin; Bu bir kod golfü. Ayrıca, kaynak dosyanızı okuyor görünüyorsunuz, bu yüzden karakter sayınıza 25 ekleyin. En düşük puan kazanır.
Justin,

@ Quincunx Öncelikle, geriye doğru ... ama ikincisi, bu phpfiddle'ın ürettiği kaynak koddur! (ama geriye doğru ...) Bir şeylerden kaçıyor, işleri güvende tutmaya çalışıyorlar. Kaynak kodun geriye dönük olmadığını görmek için array_popile değiştirin array_shift...
nl-x

Evet, ters çevrilmiş kaynak kodunu görebiliyorum, ancak tüm yabancı metinlerde neler var? Çok sayıda kaçış dizisi var, ancak olmayanlar da var (örneğin: ESLAF nruteryani return FALSE).
Justin,

@Quincunx Üzgünüm, phpFiddle'ın çalışma biçimiyle ilgileniyorsanız veya kodumu eleştiriyorsanız, onu yakalamıyorum. İkincisi ise, o zaman savunmamda, kodumu bir .php dosyasına koyun ve bir tarayıcıda çalıştırın ve düzgün çalışacaktır. Ben sadece phpfiddle'ın görmeni sağlayacak güzel bir şey olduğunu düşündüm, bu yüzden onun içsel çalışmalarının bir kısmını görebilirsin.
nl-x

4

MATLAB, 78 karakter:

 
|
.snoisserpxe ro stnemetats BALTAM ni dilav ton si retcarahc tupni ehT :rorrE

Çözümün özel bir karakterle (alt + 0160) başlamanızı gerektirdiğini ve tam olarak tersine çevrilmiş mesajı yazdırdığını unutmayın. (Python çözümünün aksine)


4

UNIX kabuğu, 31

52 karakterde gerçek çözüm :

A='printf "A$ lave;\047`echo $A|rev`\047=A"';eval $A

Ama dikkat et! Dürüstlük bugünün dünyasında işe yaramaz! Ceza çok düşük!

6 karakter + 25 = 31:

rev $0

OSX üzerinde rev $0hata üretir: rev: illegal option -- b.
kenorb

4

MS-DOS, 24 bayt

eman elif ro dnammoc daB

Çıktı:

Bad command or file name

3

JavaScript, 62

function f(){alert((f+'f()').split('').reverse().join(''))}f()

En son Chrome'da benim için çalışıyor (v 31.0.1650.63). Diğer bazı tarayıcılar farklı bir çıktı verebilir. (Bu çıkışı ters çevirirseniz çalışacaktır: P)


3

SmileBASIC, 118 102 bayt

FOR I=-101TO.?MID$(("+CHR$(34))*3,30,102)[-I];:NEXTFOR I=-100TO.?MID$(("+CHR$(34))*3,30,102)[-I];:NEXT

2

JavaScript, 56

($=_=>_!=$._?_?$(_.slice(1))+_[0]:')':$('($='+$+')('))()

Lütfen ortamınızı belirtin, çünkü bu Chrome'da çalışmaz. Bu Gergedan mı yoksa ne?
George Reith

@GeorgeReith: ES6 ok işlevi destekli bir şey. Tüm SpiderMonkey'ler iyi çalışmalıdır, örneğin (Rhino dahil).
Ry-

2

CSS, 88 bayt

<style>:before,*{display:block;unicode-bidi:bidi-override;direction:rtl;content:'<style>

Diğer etiketlerle çakışmamak için boş bir html sayfası yerleştirin.


2

JavaScript, 53 50 46 43 bayt

q=_=>("q="+q+";q()").split("").reverse().join("");q()

(q=_=>`(q=${q})()`.split("").reverse().join(""))()

(q=_=>`(q=${q})()`.split``.reverse().join``)()

(q=_=>[...`(q=${q})()`].reverse().join``)()

Lütfen bunu kısaltmama yardım et.


Paketleyiciye ihtiyacınız yok. q=_=>[...`q=${q}`].reverse().join`` aynı şekilde çalışır.
Rɪᴋᴇʀ

Ambalajı çıkarırsam, otomatik olarak kendisini yürütmez.
ericw31415 22.06.2016

buna gerek yok. İşlevler iyi.
Rɪᴋᴇʀ

Ancak kod, fonksiyonun çıktısını değil fonksiyon referansını döndürür.
ericw31415

@ ericw31415 doğru. İşlev çağrısı gereklidir.
Mama Fun Roll

2

Bulanık Octo Guacamole, 4 bayt

KNU_

Kyazdırır _UNK, Niter Noneve Uiter 0. Ve _yığında en üstteki değeri açar (ancak yazdırmaz). Yani sadece _UNKyazdırılır.


Neden Kçıktı var _UNK?
Caird coinheringaahing

@RandomUser Riker'dan daha fazla ayrıntı isteyin, o dilin yaratıcısı. Ben sadece belgeleri okudum.
Bald Bantha
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.