Palindrome Merhaba, Dünya


29

Görevin, "Selamlar, Gezegen!" Yazdıran bir program oluşturmak. tam konsola. Yeterince basit görünüyor, değil mi? İşte işte hile. Kod bir palindrome olmalı, yani soldan sağa aynı sağdan sola okur. Standart boşluklar DEĞİL izin verdi.


Bu "merhaba dünya" gibi görünmüyor.
Outgolfer Erik,

4
@ ΈρικΚωνσταντόπουλος Tüm amaç ve amaçlar için Hello World ile aynıdır. Amaç, Hello World programlarında da noktalama işaretleriyle birlikte iki kelimeden oluşan kısa bir dize basmaktır. Hello World'ü basan yerleşiklerin yanı sıra, yazdırılan gerçek dize ne olursa olsun, çözümler kesinlikle gerçek olacaktır (gerçek dize dışında). (Ve ben "Greetings, Planet!"
Martin Ender

1
MartinBüttner I @ düşünüyorum Hello, world!ve Hello World!bir için izin verilen tek çıkışlar vardır merhaba dünya programı.
Outgolfer Erik,

Yanıtlar:



16

TI-BASIC, 67 bayt

"!tenalP ,sgniteerG"
"Greetings, Planet!"

Bu, bir programın son satırının ekranda göründüğü için çalışır, oysa ilk dize aslında yorum olarak kabul edilir.

Her küçük harf 2 bayt olarak saklanır ve kalan karakterler 1 bayt'tır. Kuralları değiştirip tüm büyük harflerle basacak olsaydım, 41 bayt olurdu :

"!TENALP ,SGNITEERG"
"GREETINGS, PLANET!"

Bayt sayısını azaltmak için eve i(sayıları) daha fazla kullanabilir misiniz?
Addison Crump

1
@ VTCAKAVSMoACE Bunu düşündüm, ancak italikleştirdiler, bu yüzden biraz farklı görünüyorlar.
NinjaBearMonkey 18:15

Açıktır ki, ilk satır bir yorum değildir, cevap değişkenine kaydedilir.
Julian Lachniet,

12

Biliyorum bu biraz geç (ve biraz titiz), ama ...

> <> (Balık), 47 45 47 Bayt ( eğer rastgele yönü kullanmıyorsam gerçekten 43 45)

x"!tenalP ,sgniteerG"!|o|!"Greetings, Planet!"x

Bu cevaplar birbirinden biraz farklı; her iki kod yönü için bir şans var de yürütülme .

Bu yüzden, "konsola yazdır" derken, stdout'a yazdırmayı kastettiğinizi varsaydım. Bu bir hata veriyor; Dize stdout'a yazdırıldıktan SONRA hata stderr'e atılır.

Bunun her iki yönde de işe yaradığını ispat etmek için "rastgele yön" yönetmeni "x" i kullandım. Balık iki boyutlu bir dildir, bu nedenle, yönetmenin hangi yöne işaret ettiği önemli değildir, kod yine de (en sonunda) yürütülür.

İlk yönetmenin sağa işaret ettiğini farz edersek, karakterler "yığına" ters sırada yüklenir, sonra tersinin (veya normal metnin) tersi yazdırılır.

Her iki yöneticinin de sola işaret ettiğini farz edersek, karakterler bir kez daha "yığına" ters sırayla yüklenir (çünkü kod burada geriye doğru yüklenir, yön sola doğrudur), sonra tersinin tersi (veya normal metin) yazdırılır.

Eğer randomize yönetmen yukarı veya aşağıya işaret ederse, bu önemli olmaz - balık, kodlayıcıya geri dönerek, randomizer'a geri dönmeyi bilir. Bu şekilde, randomize ediciler ile içeriye dönük ve yürütülecek koda doğru dönmeye devam edecektir.

!|o|!Bit her iki taraftan şunları yapar:

  • !sonraki talimatı atlar (her zaman atlar |)

  • |bir reflektördür; doğru geriye doğru işaret eder o.

  • o yığının geçerli öğesini, bir karakter olarak konsola çıkarır ve yığından kaldırır.

Yani, esasen, bu, "bir banyoda iki ayna bir arada bastırıldı" numarasıdır;

Şimdi bir kedi emoji kullanarak. >o<çıkışı sürekli olarak içeriye doğru yönlendirir, yine de hatayı fırlatır, ancak yansımayı atlamadan kullanmadan kurtulabilirim.

İlk defa haklı olduğum ortaya çıktı - ikinci girişim palindromik değildi , ama yansıtıcıydı. .

Balık (stderr basılmadan), 64 Bayt (ew)

x"!tenalP ,sgniteerG"!;oooooooooooooooooo;!"Greetings, Planet!"x

Bu herif biraz daha uzun.

Aynı rasgele ok işlevine sahiptir (her iki yönde de çalıştığını kanıtlamak için) ve stderr'ye yazdırmaz.

Buradaki fark açıktır; Kelimenin tam anlamıyla yığındaki her öğeyi yazdırıyorum, sonra yürütmeyi sonlandırıyorum; .

Bir sonraki öğeyi atladığı için !;derhal yürütmeyi !durdurmaz (bu durumda son yürütmeyi sonlandırır) ve diğer tarafa ulaşana kadar devam eder.;! böyle bir şey atlanmadan yürütmeyi bitirdiği .

Kısa cevapla aynı randomize yön modelini izler.



@Aaron Genellikle burada Balık>>>> olduğu varsayılır, ancak daha önce bu sorunla karşılaştım - ekleyeceğim. Teşekkürler!
Addison Crump

Tahminimce, kodun tamamı çıkacak ya da çıkmayacak. Program sayacı iki rastgele yön komutunun arasına ya da sadece rastgele yön komutlarından birine yapışmışsa, örneğin aşağı iner, aşağıya ulaşır, o talimata geri döner ve baştan başlarsa ne olur?

@GASSIC Program sadece bir kez çıktı verir ve kodun tamamı asla çalıştırılmaz.
Addison Crump,

11

Ciklet , 38 bayt

0000000: 73 2f 4a 4d 2d c9 cc 4b 2f d6 51 08 c8 49 cc 4b 2d 51 04  s/JM-..K/.Q..I.K-Q.
0000013: 04 51 2d 4b cc 49 c8 08 51 d6 2f 4b cc c9 2d 4d 4a 2f 73  .Q-K.I..Q./K..-MJ/s

10

Makarna 0.0.2 , 52 bayt

print "Greetings, Planet!""!tenalP ,sgniteerG" tnirp

Yorumları kullanmayan bir çözüm. (Çoğunlukla Makarna'nın yorumu olmadığı için ...)


15
Makarna yorum yapmamış mı? ಠ_ಠ
Alex A.




5

GolfScript, 41 bayt

"Greetings, Planet!":"!tenalP ,sgniteerG"

Bak ma, hayır hayır! Çevrimiçi olarak Web GolfScript'te deneyin .

Kaynak kodun ikinci yarısı, dizeyi ikinci dizgide saklar.

"Greetings, Planet!":"!tenalP ,sgniteerG"
"!tenalP ,sgniteerG"

yazdırır

Greetings, Planet!Greetings, Planet!

5

C ++, 129 bayt

Bunu yorum yapmadan yapmaya çalışmak, görebileceğim bir yer olmadan derin, karanlık bir önişlemci kabusa neden oldu. Bunun yerine, mümkün olduğunca kısa sürmeyi hedefledim.

/**/
#include<cstdio>
int main(){puts("Greetings Planet!");}//*/
/*//};)"!tenalP sgniteerG"(stup{)(niam tni
>oidtsc<edulcni#
/**/

5

Python 3, 57 bayt

print('Greetings, Planet!')#)'!tenalP ,sgniteerG'(tnirp

Parantezle konuyu düzelttim.

Python 2, 53 bytes

print'Greetings, Planet!'#'!tenalP ,sgniteerG'tnirp

I used advantage of the lack of required parenthesis and spaces in Python 2, but there wasn't that big of a difference.


5

Jelly, non-competing

25 bytes This answer is non-competing, since the challenge predates the creation of Jelly.

»1ị“RsẈḄ,#ʠU“Uʠ#,ḄẈsR“ị1»

Look 'ma, no comments! Try it online!

How it works

»1ị“RsẈḄ,#ʠU“Uʠ#,ḄẈsR“ị1»  Main link. No arguments.

   “        “        “  »  Decompress all three strings; yield a list of strings.
    RsẈḄ,#ʠU               (decompresses to 'Greetings, Planet!')
             Uʠ#,ḄẈsR      (decompresses to ' WafdkmC Posited,')
                      ị1   (decompresses to 'Taarhus')

»1                         Take the maximum of the default argument (0) and 1.
  ị                        Select the string at the index to the left.

4

Stuck, 41 Bytes

"Greetings, Planet!"p"!tenalP ,sgniteerG"

Fairly similar to the CJam answer, except in Stuck if a print command is issued, automatic stack printing is suppressed.


3

Mathematica, 52 bytes

Print@"Greetings, Planet!""!tenalP ,sgniteerG"@tnirP

Also generates a Null "!tenalP ,sgniteerG"[tnirP] which doesn't get printed.


1
FYI, a lot of your answers (this one included) have been getting tossed in the Low Quality queue because they're solely a title/score and code. Though there's nothing wrong with that, you may consider adding more text (such as an explanation) so they don't get auto-flagged.
Mego

@Mego Okay, thought they were pretty self-explanatory.
LegionMammal978

1
I'm not saying the lack of an explanation is a bad thing (though answers with explanations tend to get more upvotes), I'm just letting you know that your (valid) answers were getting auto-flagged because of their length. :)
Mego

2
you can save 2 bytes with Echo in v10.3.
shrx

3

Fission, 45 43 bytes

Thanks to jimmy23013 for saving 2 bytes.

;"!tenalP ,sgniteerG"R"Greetings, Planet!";

Try it online!

R initialises an atom which moves to the right. " toggles string mode which simply prints the desired string to STDOUT before hitting ;, which destroys the atom and terminates the program. The first half is simply never executed.


@jimmy23013 I have no clue, to be honest. Thanks.
Martin Ender

3

05AB1E, 16 bytes

Code:

”!º¥,ÁÙ””ÙÁ,¥º!”

Explanation:

”!º¥,ÁÙ”          # Compressed string which results in "! Crm, Everywhere".
        ”ÙÁ,¥º!”  # Compressed string which results in "Greetings, Planet!".
                  # Top of stack is implicitly outputted.

Try it online!


2

STATA, 52 bytes

di "Greetings, Planet!"//"!tenalP ,sgniteerG" id

A slightly longer (53 byte) version that doesn't use comments is:

#d
di "Greetings, Planet!";"!tenalP ,sgniteerG" id
d#

#d [something] changes the delimiter (initially a carriage return) to ; unless [something] is cr, so the first command changes the delimiter to ;, the second prints the string, and the third (which continues until the end) is apparently a nop, though I have no idea why. I would have guessed that this would throw an error (unrecognized command "!tenalP ,sgniteerG" or something), but apparently not.


2

Japt, 29 bytes

This programming language was made after the question was posted, but was not made for this question.

`!t?ÓP ,?Ä>ÎG`;`GÎ>Ä?, PÓ?t!`

Try it online!

Each ? is an unprintable Unicode char: U+0082, U+000F, U+000F, and U+0082, respectively.

Fun fact: If Japt had been published a month sooner, it would have legitimately won this challenge.


2

APL, 41 bytes

'Greetings, Planet!'⍝'!tenalP ,sgniteerG'

In APL, the last value is printed and the lamp character (⍝) start a comment.


Hello, and welcome to PPCG! Great answer!
NoOneIsHere


2

TCL, 80 Bytes

proc unknown args {puts "Hello World!"}
}"!dlroW olleH" stup{ sgra nwonknu corp

explanation: TCL executes a global proc unknown when it encounters a call to an undefined command, the first line redefines that proc to a simple "hello world" program.

TCL's quoting rules are quite subtle, an open brace starts a quoted word that extends to the next matching close brace, allowing nested, quoted words. Braces are otherwise treated as normal characters. five words: }"!dlroW olleH", stup{, sgra, nwonknu and corp. No command named }"!dlroW olleH" has been defined, so the undefined proc from the first line is invoked instead.

A similar question was posted on the StackOverflow of antiquity; which has since been closed and deleted. I used my solution as a tongue in cheek TCL sample in this answer, and am now getting comments asking for an explanation, so I recreate my answer here.



1

Vitsy, 41 Bytes

This programming language was made after the question was posted, but was not made for this question.

"!tenalP ,sgniteerG"Z"Greetings, Planet!"

The Z character outputs everything in the stack to STDOUT.

Try it online!


1

Unefunge 98 - 49 bytes

"!tenalP ,sgniteerG<DC1>"k,@,k"<DC1>Greetings, Planet!"

The code above contains two unprintable characters with code 17 (device control 1) represented by <DC1>.


1

MSM, 73 bytes

GGreetings, Planet!.................,.................!tenalP ,sgniteerGG

The first half just before the middle , builds a reverse greeting string including the additional G on the very right. The middle , drops it and the rest is a canonical "Hello/Greeting/whatever" program. The additional characters on both ends are needed, because the message contains a ,. The left one is executed and drops the s. Both , and s need a replacement for the left concatenation dots, hence the Gs. The , on the right isn't executed, but build into the final string.


1

CoffeeScript, 53 bytes

Similar to Ruby and Lua and pretty much all the variants here.

alert 'Greetings, Planet!'#'!tenalP ,sgniteerG' trela


1

Bash, 52 48 bytes

echo Greetings, Planet!||!tenalP ,sgniteerG ohce

Also works in ksh, zsh, yash, dash. But not tcsh.

$ cat x.sh
echo Greetings, Planet!||!tenalP ,sgniteerG ohce
$ bash x.sh
Greetings, Planet!
$ ksh x.sh
Greetings, Planet!
$ zsh x.sh
Greetings, Planet!
$ yash x.sh
Greetings, Planet!
$ dash x.sh
Greetings, Planet!
$ tcsh x.sh
tenalP: Event not found.
$

1
Remove all quotes.
manatwork

1
Oh dear, a bash answer was shorter than python =/. Back to the drawing board!
Ashwin Gupta

1

Lua, 52 Bytes

print"Greetings, Planet!"--"!tenalP ,sgniteerG"tnirp

In Lua terminal, it is only 44 bytes with

="Greetings, Planet!"--"!tenalP ,sgniteerG"=

My bad. Thanks for the alert!
Digital Veer

Remove all parentheses. For functions with a single string parameter they are optional.
manatwork

Lua 5.3 do not require = in terminal, so it is 2 bytes off there. I think it existed in 2015, not sure tho.
val says Reinstate Monica

1

Milky Way 1.5.10, 43 41 39 bytes

"Greetings, Planet!"!tenalP ,sgniteerG"

Explanation

"Greetings, Planet!"                       # push the string to the stack
                    !                      # output the TOS
                     tenalP ,sgniteerG"    # throws an error and exits

Usage

python3 milkyway.py <path-to-code>

Did you really need a comment? If this is stack based (without implicit output), then just outputting the stack should work.
Addison Crump

You're right! Thanks. @FlagAsSpam
Zach Gates
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.