Alfanümerik Merhaba Dünya [kapalı]


43

Amacınız "Merhaba, Dünya!" Yazmak. (alıntılar eksi). Bu bir , bu yüzden çoğu oy kazanıyor. Kod uzunluğu bağları koparmak için kullanılacaktır.
Herhangi bir şey, aşağıdaki kurallara uygun olduğu sürece geçerlidir:

  • Tüm karakterlerin harf veya rakam olması gerekir, bu nedenle yalnızca "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" dizesindeki karakterleri kullanabilirsiniz.
  • Kullandığınız tüm kodlar, içe aktarılmış modüller / sınıflar / en sevdiğiniz dilde ne adlandırılsalar hariç, bir dosyada olmalıdır.
  • Seçtiğiniz dil için yalnızca standart kitaplıklara / çerçevelere izin verilir (örneğin, Python'un Matematik modülüne izin verilir, ancak Numpy, Scipy ve Pygame izin verilmez). Python'daki GUI'ler için fiili standart olduğu için TkInter'e izin vereceğim.
  • Girişe izin verilmiyor, stdin'den okuma, bir dosyayı okuma, bir görüntüden vazgeçme veya web'den okuma gibi.

+10 brownie, Java'da kuralları bükmeden nasıl yapılacağını belirlerseniz işaret eder.


İşaretlerine göre, kod gir!

EDIT: kaşlı ayraçlar ({}), parantezler ([]) ve parantezlere (()) izin verilir, çünkü bunlar olmadan birçok dil için imkansızdır. Ben de karakter limit kuralını kaldırıyorum. Umarım bu daha ilginç hale getirecek.

EDIT ^ 2: beyaz boşluğa da izin verilir. Beynim düzgün çalışmıyor, üzgünüm. >. <


1
Size kalmış, sadece emin oluyorum. Peki ya boşluk?
Geobits

1
Ah, doğru boşluk. Beynim bugün açıkça düzgün çalışmıyor. Buna izin verilmeli. Bir saniye, kuralları düzelteyim.
15'te

8
Yani operatör yok mu? Ve en önemlisi hayır ;mı? C'ye nasıl bir şey yazabilirim?
Oberon


3
J'nin nasıl doğal bir şekilde dışarıda bırakılacağını bulmak için + 1: 72 101 108 108 111 44 32 87 111 114 108 100 33{a.sonunda çalışmak için süreyi gerektirir ve u:benzer şekilde bir yoldan bir kolon gerektirir. Olmadan .ve :biz bir hiçiz.
algorithmshark

Yanıtlar:


103

Perl

Bazıları perl ascii gürültüsü ve rastgele sembollerle dolu bir dil olduğunu söylüyor $... Bu doğru değil: P

s zzHelloq worldmz and s zqzchr 44ze and s zmzchr 33ze and print

Bunu alt ifadelere ayıralım:

(s zzHelloq worldmz) and (s zqzchr 44ze) and (s zmzchr 33ze) and (print)
Her ifade doğru döndüğü sürece soldan sağa doğru yürüdüğü açık olmalıdır. Ama dünyadaki nedir s zqzchr 44ze?

Perl olarak, bir grup var "alıntı benzeri operatörler" içerir q(str), qw(li st), /regex/, s/from/to/diğer şeyler arasında. Görünüşe göre, bu operatörlerin hemen hemen her karakteri sınırlayıcı olarak kullanabiliyorlar , birkaç özelliği var: açılış parantezi eşleşen bir kapanış parantezi ile kapatılmalıdır ve bir harfi sınırlayıcı olarak kullanmak isterseniz boşluk koymak zorundasınız. Operatör mektubundan sonra (bir korkaktan çıkarmak için).

Bu durumda, s///(regex ikame) operatörünün üç kullanımını görüyoruz :

s//Helloq worldm/
s/q/chr 44/e
s/m/chr 33/e
Hepsi karakteriyle sınırlandırılmış z. Son /eikideki bayrak, değişimin değişmez metin yerine değerlendirilecek kod olarak yorumlanmasına neden olur.

Perl hakkında oldukça iyi bilinen bir gerçektir, $_aksi belirtilmediği sürece işlemlerin çoğunun yerleşik değişkende işlemesi varsayılandır . Bütün bu üç oyuncu değişikliği ve printüzerinde işlem $_o zaman karakterlerin sayısal ASCII değerleri kullanarak noktalama düzeltmek, bu yüzden ilk biz değişkenin içine kelimeleri Merhaba dünya koymak, bu durumda, o zaman değişkenin içeriğini yazdırmak.


46
+1 Neler oluyor burada bilmiyorum ama işe yarıyor!
pembemsi ossifrage

95
@squeamishossifrage Perl sloganı olabilir
mniip

6
Yapabilseydin, küçük bir açıklama ekler miydin?
ace_HongKongIndependence

10
Ben hiçbir şekilde uzman değilim, ama perl'de bir değiştirme genellikle ile belirtilir s/PATTERN/REPLACEMENT/FLAGS, ancak aslında eğik çizgiler yerine istediğiniz her şeyi kullanabilirsiniz. Buradaki kod eğik çizgiler yerine "z" yi kullanır ve "hiçbir şey" i "Helloq Worldm" e çevirir (sonra "ch" yerine "q" yerine geçer ("REPLACEMENT aka" chr 44 "ifadesini değerlendirmek için" e bayrağını kullanarak) ", ". Daha sonra "m" yi chr 33, bir "!" İle değiştirir ve yazdırır.
Amory

3
Alıntı benzeri bir işleçte, örneğin q//, herhangi bir sınırlayıcı kullanılabilir q!! q** q\\ q;;. Birkaç istisna kapatmak için bu vardır (Kullanmak ), q() q[] q{} q<>bu örneğin disallow belirsizlik, operatörden aralıklı olmalıdır ve bu sınırlayıcı olarak bir alfasayısal kullanmak q qq, q 66. Aynı numaralar diğer fiyat teklifi operatörleri için de geçerlidir.
sabah

73

C

int main(void) {
  if (putchar(72))
    if (putchar(101))
      if (putchar(putchar(108)))
        if (putchar(111))
          if (putchar(44))
            if (putchar(32))
              if (putchar(87))
                if (putchar(111))
                  if (putchar(114))
                    if (putchar(108))
                      if (putchar(100))
                        if (putchar(33)) 
                        {
                        }
}

4
Müthiş! C de yapılabilir. Ve bunu kazanacağımı düşündüm ...
Level River St

2
@ace Sadece tanımlanmış vakalarınız varsa. Bunu switch(putchar(72)){}switch(putchar(101)){}vb. Kolayca yeniden yazabilirsiniz .
Comintern

27
+1 içinputchar(putchar(108))
Ilmari Karonen

2
Sadece virgül için bir "if (putchar (44))" yok.
6'14

1
Bence, sorudaki virgülün nasıl kaçırıldığından emin değilim. Sabit.
mattnewport

49

(Düzenleme - BBC basic, önerildiği gibi cevabı ayırmak için harekete geçti.

LOGO

Tercüman http://www.calormen.com/jslogo/#

TO h        pd  fd 100 rt  90  pu  fd 50  rt 90  pd  fd 100  rt 180 fd 50  lt 90  fd 50  rt 90  pu END 
TO e        pu  fd 25  rt  90  pd  fd 25  rt 90  arc 270 25  lt 90  fd 25  lt 90  pu END  
TO l        pd  fd 100 pu  END  
TO o        rt  45 fd  35  pd  arc 360 25  lt  45  pu END 
TO comma    pd  rt 90  arc 90  15  lt  90  pu END 
TO w         l  rt 180 l   pd  lt  135 fd  35  rt  90  fd 35  lt 135  l  END  
TO r        pd  fd 25  rt  90  pu  fd  25  rt 180  arc 180 25 rt 90 END 
TO d         o  rt 135 fd  35  lt  135  l  END      
TO exclaim arc 360 5   fd  10  l  END 

clearscreen  
setpencolor 4 pu 
setxy 0 150      h 
setxy 100 150    e  
setxy 200 150    l 
setxy 250 150    l 
setxy 300 150    o 
setxy 350 150    comma  
setpencolor 1 
setxy 0 0        w 
setxy 100 0      o 
setxy 200 0      r  
setxy 300 0      l 
setxy 350 0      d 
setxy 450 0      exclaim 
fd 100

Çıktı (yeşil üçgen kaplumbağa imlecidir)

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


2
Bu cevabı ikiye bölmelisin.
Justin,

@WallyWest Dili pek tanımıyorum, ancak işin aracıydı. Metni de yazdırabilirsiniz (çiziminizde etiket olarak adlandırılır) ancak bunun için bir tırnak işareti gerekir (Sanırım sadece açılış teklifi gerekli ve kapanış teklifi isteğe bağlı.)
Level River St

1
Sözcük yazdırmak yerine çizim için +1.
wec

@steveverril İkinci alıntı, aslında bir sözdizimi hatası olurdu.
14'te

29

applescript

[]Bunda parantez , parantez {}veya parantez yok ():

set s to ASCII character 72
set s to s as list
set end of s to ASCII character 101
set end of s to ASCII character 108
set end of s to end of s
set end of s to ASCII character 111
set end of s to ASCII character 44
set end of s to space
set end of s to ASCII character 87
set end of s to item 5 of s
set end of s to ASCII character 114
set end of s to third item of s
set end of s to ASCII character 100
set end of s to ASCII character 33
display dialog s as text

Çıktı: görüntü tanımını buraya girin


10
Inanılmaz! (“Karakter” kelimesini tam olarak yazmak zorunda kalıyorum demek istiyorum!) Şimdi Elmalar'ın pahalı olmasının ne demek olduğunu anladım. Sadece şaka, farklı şeyler için +1 :-)
Level River St

10
AppleScript gülünç derecede ayrıntılı, ancak sonuçta, bir meslekten olmayan kişi için gerçekten en anlaşılır programlama dillerinden biri.
Jonathan Van Matre

3
@JonathanVanMatre Yazması zor, okunması kolay
Digital Trauma

2
C'nin okunması daha kolay ...
Sarge Borsch

1
@Cruncher - Bu kolaydır. Komut set s to s as listdönüştüren "H"içine {"H"}(bir liste). Diğer dillerde, Java gibi, bunu yapmak genellikle daha karmaşıktır.
Nicolas Barbulesco

24

darbe

Bu tarz işler, gözlerini kısarsan:

echo NN i NN i i i iNN NNi i i i i i i NN i NN i i i i i i i NNi i i NN NN
echo NN i NNi i i i NN NN i i i i i i iNN i NN i i i i i i i NN i i iNN NN
echo NN i NN iNNNNi NN NN iNNNNi i i i NN i NN iNNNNi NN NN iNN iNNN NN NN
echo NNNNNNN NN iNN NN NN NN iNN i i i NN i NN NN iNN NNN iN NN NN iNNN N
echo NN i NN NNNNNN NN NN NNi NN i i i NN N NN NNi NN NN i i NN NNi iNN N
echo NN i NN NN i i NN NN NN iNN i i i NNN NNN NN iNN NN i i NN NN i NN
echo NN i NN iNNNi iNN NN iNNNNi N i i NN i NN iNNNNi NN i i NN iNNNN N NN
echo i i i i i i i i i i i i i i N

1
bu windows yarasa / cmd dosyasında da çalışıyor
phuclv 10:14

banner Hello Worldveyafiglet Hello World

2
@professorfish bu meydan okuma zor kısmı oluyor ,ve !. Aksi takdirde, sadece eski düz kullanırım echo.
Dijital Travma

@DigitalTrauma oh, üzgünüm, görmedim ... biraz yavaş

19

base64

SGVsbG8sIFdvcmxkIQ

Orijinal kuralları yerine getirir.


2
Base64 bir dil midir? Peki çıktınız nedir? Doğru büyük harf kullanımı var mı?
Seviye Nehri St

23
Elbette bir dil, sadece Turing-tamamlanmadı. Ayrıca, base64decode.org
Kendall Frey

1
Haha. Bu yanıt için yorumunuzu + 1'leyin, ancak cevabınızı değil. Belki cevabınız sonra istersem cevabınız.
Seviye Nehri St

2
@Neil kullanılmış"
mniip

2
@KendallFrey Bu mantıkla, base10 bir dildir: 1234567890.
Cole Johnson

19

piton

Ne yani, herkesin yatay okuduğunu varsayalım. Dikey olarak okumayı seven kullanıcılar için:

print chr(72) 
print chr(101)
print chr(108)
print chr(108)
print chr(111)
print chr(44)
print chr(32)
print chr(87)
print chr(111)
print chr(114)
print chr(108)
print chr(100)
print chr(33)

+1 ve hahaha! Bu sorunun başında çok fazla düşüş vardı, çünkü insanlar bunun imkansız olduğuna inanıyordu. Python'u tanımıyorum ama tüm inilti verildiğinde, bu kadar ortak bir dilde BU kadar kolay olduğuna inanamadım.
Seviye Nehri St

1
Bu cevap gönderilmeden önce tam olarak aynı kodu yazdım. Cevabımı göndermek ve bunu buldum ...
grovesNL

1
@steveverrill İnleme sebepsiz değildi. Burada orijinal kuralları geçecek tek bir cevap yok (parantez / parens / parantez yok, bir defadan fazla tekrarlanan karakter yok)
Geobits

1
@grovesNL Kendinizi daha iyi hissettiriyorsa, bu şimdiye kadar python kullandığım ilk şey . Dokümanları tarayarak bir süre geçirdim, göndermeden önce bir satırda toplamanın uygun bir yolu olup olmadığını anlamaya çalışıyorum.
Geobits

@Geobits sys.stdout.write, Python'daki çoğu sürümünde yeni satırlar olmadan metin çıktısının standart yoludur (davranış 3.0'da biraz değişmiştir). Bunu dönemler nedeniyle burada yapamayız.
grovesNL

19

Polyglot: HQ9 +, H9 +, HQ9 ++, CHIQRSX9 +, HQ9 + B ve HQ9 + 2D (1 bayt)

H

Dil listesi için @ victortor teşekkür ederiz.


5
Bu bir poliglot. H9 +, HQ9 ++, CHIQRSX9 +, HQ9 + B ve HQ9 + 2D de çalışır.
Victor Stafusa

Merhaba da çalıştığına eminim.
wec

5
Senin icat ettiğin herhangi bir dilde çalışıyor.
Sıfır Fiber

2
Ben hiçbir şey icat etmedim ...
Ismael Miguel

6
Ne yazık ki, çıktı "merhaba dünya" ( esolangs.org/wiki/HQ9%2B ) ya da bu tercümana göre "Merhaba dünya". ( almnet.de/esolang/hq9plus.php ) "Merhaba dünya!" akümülatörü birkaç kez arttırmanız gerekebilir.
tttppp

17

OMGROFL

Ben ezoterik dillerin hayranıyım. Neyse ki OMGROFL alfanümeriktir:

lol iz 72
rofl lol
lol iz 101
rofl lol
lol iz 108
rofl lol
rofl lol
lool iz 111
rofl lool
loool iz 44
rofl loool
loool iz 32
rofl loool
loool iz 87
rofl loool
rofl lool
lool iz 114
rofl lool
rofl lol
lol iz 100
rofl lol
lol iz 33
rofl lol
stfu

izKomut bu durumda, bir değişkene bir değer ayarlar lol, loolve loooldeğişkenler olarak hizmet ...

roflDeğişkende saklanan sayıya denk ASCII dışarı komut yankıları.

stfuKomut program sona erer;)


Haha güzel! Bir LOLCODE versiyonunu denemek istedim ancak dil, girişleri karakterlere zorlamak için iki nokta üst üste ve tırnak işaretleri kullanılmasını gerektiriyor.
Jonathan Van Matre

17

COBOL

   ID DIVISION 
   DATA DIVISION 
   01  HELLOWORLDBINARY 
       05  HE                       COMP    PIC 9999 
       05  LL                       COMP    PIC 9999 
       05  OCOMMA                   COMP    PIC 9999 
       05  SPACEW                   COMP    PIC 9999 
       05  ORTEXT                   COMP    PIC 9999 
       05  LD                       COMP    PIC 9999 
       05  EXCLAMATION              COMP    PIC 9999 
   01  FILLER REDEFINES HELLOWORLDBINARY 
       05  HELLOWORLDTEXT                   PIC XXXXXXXXXXXXX
       05  FILLER                           PIC X 
   PROCEDURE DIVISION 
       MOVE 51333                   TO HE 
       MOVE 37779                   TO LL 
       MOVE 38507                   TO OCOMMA 
       MOVE 16614                   TO SPACEW 
       MOVE 38553                   TO ORTEXT 
       MOVE 37764                   TO LD 
       MOVE 23104                   TO EXCLAMATION 
       DISPLAY HELLOWORLDTEXT 
       GOBACK 

Yalnızca gerçekten alfasayısal bir kaynak olması için bazı değişiklikler yapılması gerekiyor.

PROGRAM kimliği bırakılabilir. Üretilen bir program adı elde edersiniz (mesajlara bakınız).

ÇALIŞMA-DEPOLAMA bırakılabilir. Yine derleyici inliyor.

Bu satırların her ikisinde de daha önce tam duraklar / süreler eksik olduğundan, artık açıklamaların tamamen eksik olduğu için artık geçerli değildir, hata mesajlarının sayısı öncekiyle aynıdır ve yine de program için oluşturulan kodu etkilemez.

COMP-5 ila COMP değiştirilirken, COMP 9999 sadece dört ondalık basamak olduğundan COMPAL 5 değerlerine artık izin verilmez, COMP-5 ise tüm bit değerleri olan iki bayt bir ikilidir.

MOVE'lerdeki değerler, karakter çiftlerini veren ikili değerleri veren ondalık değerlerdir.

COMP alanlarının dört basamağı olmasına rağmen ve dört basamaktan fazla VALUE yan tümcesine izin vermemesine rağmen, bu noktada kesilmeden değişmez bir değerin MOVE'inde daha fazla basamak kullanabilirsiniz ... nedenini sorma. Derleyici seçeneği DIAGTRUNC (kapattığım) bunlar için uyarı diyagnostiği üretecektir.

Derleyici seçeneği TRUNC (BIN), COMP-COMP'ı 5 olarak ele almak için kullanılabilir, ancak MOVE'ler bunu yapmanın başka bir yoludur.

COBOL olduğundan, çıkışın UPPER CASE (bir yalan, ama sadece eğlence için) olması gerekir.

HELLO WORLD!

Tamam, şimdiden, şimdi:

Hello, World!

Tek sayıda karakter olması nedeniyle, daha fazla değişiklik yapılması gerekiyor; çünkü bu derleyicide tek sayı baytlık ikili alanlara sahip olamıyoruz. Şu 13 X çizgisine bak! Normalde X (13) olarak yazılır, ancak gösterdiğim gibi olabilir ...

ORTEXT bir isim olarak gereklidir (ya da değil), çünkü OR derleyiciye ayrılmış bir sözcüktür (tabii ki OR anlamına gelir).

Bunlar, EBCDIC uyumlu ve Big Endian kutusunda çalıştığından ASCII değil EBCDIC değerleridir.

Oh, COBOL çok fazla durma / süre gerektirir. Onları dışarıda bıraktım (yasaklandılar) bu yüzden birçok derleme mesajı aldım. Sadece derleyiciye yine de kodu oluşturmasını söyledim (iletilerin hiçbiri nesne koduyla ilgili değil).

DIAGTRUNC olmadan bile, mesajlar şimdi 17'ye ...

  1  IGYDS1003-E   A "PROGRAM-ID" paragraph was not found. 
  Program-name "CBLNAM01" was assumed. 

  2  IGYDS1082-E   A period was required.  A period was assumed 
  before "DATA". 

  3  IGYDS1082-E   A period was required.  A period was assumed 
  before "01". 

                   Same message on line:     11 

  3  IGYDS1040-E   A data item was found in the "DATA DIVISION" 
                   before a section header was encountered. 
                   "WORKING-STORAGE SECTION" was assumed. 

  4  IGYDS1082-E   A period was required.  A period was assumed 
  before "05". 

                   Same message on line:      5      6      7      8
                   9     10     12     13 

 14  IGYDS1082-E   A period was required.  A period was assumed 
 before "PROCEDURE". 

 15  IGYPS2145-E   A period was required.  A period was assumed 
 before "MOVE". 

 23  IGYSC1082-E   A period was required.  A period was assumed 
 before "END OF PROGRAM". 

1
Sanmıyorum -izin verilir
mniip

1
İyi bir nokta. Tamir ediyorum. Alışkanlıkları.
Bill Woodger

@mniip Mmmm .... biraz daha aldatıcı ... ÇALIŞMA SAKLAMA'sını daha sonra düzeltmem gerekecek. Şimdi gitmeliyim ...
Bill Woodger

1
"COBOL olduğu için, çıkış BÜYÜK DURUMDA olmalı" diye güldüm. İyi iş!
Jonathan Van Matre

15

Yakut (sadece alumlar ve boşluk kullanarak)

putc 72
putc 101
putc 108
putc 108
putc 111
putc 44
putc 32
putc 87
putc 111
putc 114
putc 108
putc 100
putc 33

Çıktı: Hello, World!


15

JavaScript

with (function SGVsbG8sIFdvcmxkIQ(){}) atob(name)

Test etmek için tarayıcının konsolunu kullanın.


14

JavaScript

with (String) with ([]) {
    push(fromCharCode(72))
    push(fromCharCode(101))
    push(fromCharCode(108))
    push(fromCharCode(108))
    push(fromCharCode(111))
    push(fromCharCode(44))
    push(fromCharCode(32))
    push(fromCharCode(87))
    push(fromCharCode(111))
    push(fromCharCode(114))
    push(fromCharCode(108))
    push(fromCharCode(100))
    push(fromCharCode(33))
    alert(join([]))
}

1
ARGH! Aynı çözüme ulaştım, fakat saat 2:00 olduğu için yatağa gidip sabaha göndermem gerektiğine karar verdim. Kudos sana!
DocMax

12

Fernando

h E R
e I S
h E
l L O
w O
r L
d U S
i N G
o N L
y L E
t T E
r S

H e L L o W O R
L d h E L l O w
O r l D h e L L
O w o R l d H E
L l o W o r l d
H E l L o w O R
L D h E L L O W
O r L d H e l l
O w o R l d h e
L l o w O R l D
H e l L o w O R
L d h E L l O W
O R l D H E L l
O w O
r L d

Kayıp Virgül ve!
VoronoiPotato

@ VoronoiPotato: burada iyi çalışıyor
marinus

Üzgünüz: X
VoronoiPotato

12

Rebol'un

Alfanümerik tek çözüm:

prin quote Hello prin add space 12 prin space prin quote World print add space 1

Yukarıdaki, Dr Rebmu'yu tüm karakterlere ulaşmak için add space 1(üreten !) mükemmel öneri kullanan bir güncellemedir .

Orijinal sürüm aşağıdadır:

prin quote Hello prin pick mold system 264 prin space prin quote World print pick mold system 12

Parantezli daha kısa versiyon:

print rejoin [quote Hello pick mold system 264 space quote World pick mold system 12] 

Ve hatta parantez ile daha kısa versiyon:

print join {Hello} join pick mold system 264 join { World} pick mold system 12

Her iki braket ve parantez ile en kısa sürüm:

print rejoin [{Hello} pick mold system 264 { World} pick mold system 12]

Rebol, {}çok satırlı tırnak için parantez kullanır . Bu yüzden kurallar altında tamamen geçerli ama ilk iki cevabımdaki gibi tam ruh halinde (IMHO) değil.


NB. Yazdırma !bir ağrı oldu!

Rebol, noktalama karakterlerini işlev adları ve veri türleri için rutin olarak kullanır ve kullanır. Dolayısıyla , kurallar gibi seçeneklere izin verilmeyebilir to-char 33veya to char! 33izin verilmeyebilir (bu noktalamalar operatör tarafından kullanılmasa da).

Neyse ki, Rebol sistem nesnesini çevirerek arsız bir yol buldum: make object! [...]bir dizeye ve vişne seçimine dönüştürdüm !:)

Güncelleme: Ve şimdi de sistem nesnesindeki lisans metninden kiraz toplayan virgül.


1
!izin verilmez
bahçelerNL

2
@grovesNL - Çözüm artık kullanmıyor -ya !da artık aşağı oylamayı kaldırabilirsiniz
draegtun 5:14

1
Virgül kaçırıyorsunuz
mniip 6'14

1
@mniip - Teşekkürler bunu kaçırdı! Şimdi düzelttim.
draegtun

1
Oldukça zor, ama sadece karakterleri almak için boşluk ekleyebilirdin ... ;-) 46 karakterde yer alan Rebmu çözümüne bakın ...
Dr. Rebmu

12

C

Yalnızca alfasayısal karakterler, boşluklar ve parantezler {}, köşeli parantezler [] ve parantez () kullanır.

main()
{
        if(printf((long long []){0x202c6f6c6c6548}))
                if(printf((long long []){0x21646c726f57})){}
}

printf () bir karakteri * argüman olarak kabul eder, ancak tırnak işaretleri (") kullanamadığımızdan, dizeyi uzun bir dizi olarak yazarım. Burada görülen değerler ASCII dizeleridir, küçük endian (0x48 = H, 0x65 = e, 0x6c = l, vb.) Uzun süre [] yazdım çünkü bu şekilde 8 baytlık bir argüman iletebilirim ve bu yüzden dört yerine sadece iki printf () çağrısı kullanabilirim.


Bu sonları kural # 1
Timtech

1
Karakterlere, numaralara, boşluklara ve {} () [] izin verilir.
pank4j

diziye bir int hazır olabilir? Bunu daha önce hiç görmedim
phuclv

Bu ne işe yarıyor?
Nicolas Barbulesco

@ LưuVĩnhPhúc Dizi bir işaretçidir. İşaretçi bir tamsayıdır.
seequ

11

BBC TEMEL

Bbcbasic.co.uk şirketinde Emulator

LOGO cevabımdan ayrıl.

Kolay yol

Sağdaki sayılar sadece ASCII kodlarıdır. Bu sadece baskı ile aynı. Bir virgül izni verilseydi tek bir satırda yapabilirdim ( VDU 72,101,108,etc.)

   10 VDU 72
   20 VDU 101
   30 VDU 108
   40 VDU 108
   50 VDU 111
   55 VDU 44
   60 VDU 32
   70 VDU 87
   80 VDU 111
   90 VDU 114
  100 VDU 108
  110 VDU 100
  120 VDU 33

Daha yaratıcı bir yol

    5 MODE 6
   10 READ B
   12 WHILE B
   15   PROC1(B)
   16   PRINT
   17   READ B
   18 ENDWHILE
   20 END

REM procedure prints first square on line, 
REM then calls itself recursively with A DIV 2 to print the next
REM VDU 17 tell VDU controller we want to change colour
REM Next line changes background colour. 
REM Then following line VDU 32 prints a space in that background colour.

  110 DEFPROC1(A)
  115 VDU 17
  120 IF A AND 1 THEN VDU VPOS DIV 6 EOR 133 ELSE VDU 128
  125 VDU 32
  130 IF A THEN PROC1(A DIV2)
  140 ENDPROC

REM binary bitmap data for each row, least significant at left
  150 DATA 463221
  160 DATA 332053
  170 DATA 332151
  180 DATA 332053
  190 DATA 2586485
  200 DATA 1048576
  210 DATA 4395895
  220 DATA 4527447
  230 DATA 4526935
  240 DATA 333143
  250 DATA 4420981
  260 DATA 0

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



11

DC

DC sadece iş için mükemmel bir araç.

5735816763073854918203775149089P

DC'ler P-komutu yığından bir sayı çıkarır ve ham bilgisayar gösterimini STDIO'ya verir. Olarak gören 5735816763073854918203775149089 = 0x48656C6C6F2C20576F726C6421olarak temsil edildiği, 0x21, 0x64, 0x6C... = 'H', 'e', 'l'...bir küçük endian mimarisinde, bu çıktılar Hello, World!.


Bu nasıl çalışıyor? Bir açıklama ekler misiniz?
wec

1
Bir şey değil. Kısa bir açıklama eklenecektir.
Fors

2
+1. Birkaç karakterden tasarruf etmek için hex'i yapabilirsin:16i48656C6C6F2C20576F726C6421P
Digital Trauma

9

JavaScript!

Ve bunun yapılamayacağını söylediler. Atama operatörleri yok, kapatıcılar yok, teklif yok! Arghhhh!

Korkma ... Çünkü withsen sensin ...

function w(x){
    with(document){
        with(String){
            write(fromCharCode(x))
        }
    }
}
w(72)
w(101)
w(108)
w(108)
w(111)
w(44)
w(32)
w(87)
w(111)
w(114)
w(108)
w(100)
w(33)

Output (on browser screen): Hello, World!

Javascript değil "Java ile yapabilirsen Bonus" dedi.
Almo

@Almo Java'da yapmayı hedeflemiyordum ... Buradaki buradaki temel gücüm olan JavaScript üzerinde
duruyordum

Ama dedin ki "Ve bunun yapılamayacağını söyledi" diyerek Java'da yapacağı bulmacaya değindiğine inanıyorum. Birçok kişi hala Java'yı Javascript ile karıştırıyor.
Almo

@Almo, sadece genel bir deyim kullanıyordum ... Ve "Javascript" e atıfta bulunduğumda, JavaScript kullanmak niyetindeyim ... Güven bana, bonus
kazanmayı planlamıyordum

9

JavaScript

Güncelleme: Bir Dünya işlevi de sunarak bir grup karakteri kesmeyi başardı.

Console.log dosyasına yazan bir başka Javascript çözümü:

function World() { with (World) return name }
function Hello() {}
with (console)
with (String)
with (Hello)
with (name)
with (concat(fromCharCode(44)))
with (concat(fromCharCode(32)))
with (concat(World()))
log(concat(fromCharCode(33)))

Bu girişten ilham alındı .

İlk olarak, Merhaba ve Dünya adlı işlevleri tanımlarım. Bu daha sonra kullanılacaktır.

Sonra iç içe zinciri ile başlıyorum. with (console)Ve with (String)bu yüzden daha sonra Invoke üzerinde can olduğunu kullanılmaktadır console.logve String.fromCharCodebir nokta kullanmadan.

Plan şimdi Hello, World!iç içe geçmişleri kötüye kullanarak dizeyi oluşturmak . Concat () işlevini her başlattığımda, ortaya çıkan dizge sonraki bloktaki bağlam olacak. İşlevin özelliğine "Hello"erişerek hızlı bir şekilde ulaşmak için kısa bir yol alıyorum . Sonra virgül ve boşluk karakterlerini kullanarak birleştiririm .nameHelloString.fromCharCode

Bir sonraki numara "World"ipin bir parçasını almak . HelloWorld.name'i çağıramadığım için kullandığım yöntemi kullanamıyorum. Bunun yerine bu mantığı Dünya yöntemine koydum ve onu çağırdım.

Son olarak, son ünlem işaretini ekledim ve sonucu elbette console.log olan log fonksiyonuna gönderdim.


7

Perl

Modern bir Perl'de (5.10 veya daha yenisi):

print q{Hello} and print chr 44 and print q{ World} and say chr 33

Eski Perl'de:

print q{Hello} and print chr 44 and print q{ World} and print chr 33 and print chr 10


Yukarıdaki her iki çözüm de Perl qalıntı benzeri operatör kullanır ve örneğin bir dize alıntı yapmak için seçici sınırlayıcılara izin verir. q{} q[] q() q//

Bu çözüm, kaşlı ayraç, parantez veya parens sağlayan kural değişikliğini gerektirir. Bu yüzden tamamen geçerli iken mniipmükemmel Perl cevabının kuralların gerçek ruhu içinde olduğunu düşünür (+1).

Ancak mniipcevabın bir çıktısını alarak çözümüm şöyle yazılabilir:

print q xHellox and print chr 44 and print q x Worldx and say chr 33

ve göze daha sert gelirse işe yarıyor.


1
Virgül kaçırıyorsunuz
mniip 6'14

1
@mniip - Tekrar teşekkürler. Şimdi eksik virgül eklediniz.
draegtun

Ayrıntı olmadan AppleScript gibi görünüyor
Ming-Tang

Mac'imde ilk ve üçüncü Perl çizgileri çalışmıyor, sadece ikinci Perl çizgisi çalışıyor. Perl 5.16.2 var.
Nicolas Barbulesco

syntax error at -e line 1, near "say chr"
Nicolas Barbulesco

7

Perl

print chr hex for qw z48 65 6c 6c 6f 2c 20 57 6f 72 6c 64 21z

6

Python:

import antigravity 

nedenleri "Merhaba dünya!" Ekranda görünmek için Bana inanma Kendiniz deneyin! Ayrıca, bu aslında web kullanmıyor, bir web sitesini açabilecek bir tarayıcı açıyor.


1
768 piksel yüksekliğinde bir ekranım var, "Merhaba dünya!" benim ekranımda görünmüyor.
Olivier Grégoire

1
Bu, "Merhaba dünya!" Yazmaz. görüş alanımın herhangi bir yerinde. Ancak bu, xkcd.com/353/ / Safari'de açılır !
Nicolas Barbulesco

Şimdi Web'i kullanmıyorum. Bir Web sitesine bağlanabilecek bir tarayıcıda yazıyorum.
Nicolas Barbulesco

sciyoshi.com/2008/12/import-antigravity Kod, Python 3'ün görünmesini gerektirir ancak Python 3'te çalışmayacaktır (desteklenmediyse).
Mart Ho,

6

Beyaz boşluk

Tamam, boşluk kullanabiliriz. Sadece kullanır Space, Tab, LineFeedve diğer karakterleri yok sayar.

   	  	   
	
     		  	 	
	
     		 		  
	
     		 		  
	
     		 				
	
     	 		  
	
     	     
	
     			 			
	
     		 				
	
     			  	 
	
     		 		  
	
     		  	  
	
     	    	
	
  


: Yorum ile S, Tya Laraçlarla Space, Tabya LineFeedsırasıyla.

S S S T S S T   S S S L
T   L
S S S S S T T   S S T   S T L
T   L
S S S S S T T   S T T   S S L
T   L
S S S S S T T   S T T   S S L
T   L
S S S S S T T   S T T   T   T   L
T   L
S S S S S T S T T   S S L
T   L
S S S S S T S S S S S L
T   L
S S S S S T T   T   S T T   T   L
T   L
S S S S S T T   S T T   T   T   L
T   L
S S S S S T T   T   S S T   S L
T   L
S S S S S T T   S T T   S S L
T   L
S S S S S T T   S S T   S S L
T   L
S S S S S T S S S S T   L
T   L
S S L
L
L

Vurgulama ile: http://en.wikipedia.org/wiki/Whitespace_(programming_language)#Sample_code


5

dc, (golfçüler için 26 bayt)

Boşluk ve []parantezlere artık izin verildi:

[Hello]n44P[ World]n33P[]p

Çıktı:

$ dc <<< "[Hello]n44P[ World]n33P[]p"
Hello, World!
$ 

5

Rebmu , 46 karakter

pnUPPqHELLO01pnADsp12pnSPpnUPPqWORLD01pnADsp01

Şiddetle paralellikler @ dragetun'un Rebol'deki çözümü (Rebmu, Code Golf'te sallanarak dillere dikkat çekmeyi amaçlayan bir "lehçe" olan bir Rebol / Kırmızı öğretim aracıdır. :-P)

Ancak, eksik karakterleri elde etmek için daha açık bir şey yaptım. Sadece sistem dizgilerine bakmak ve bakmak yerine uzaya ekledim. Sen alabilirsiniz eklenti alanı 1 karakter değişmezi # almak için "!" ve "#" karakterini elde etmek için boşluk 12'yi ekleyin .

Eğer bunu çalıştırırsak, "unmushed" aldığını görebiliriz:

>> rebmu/debug/stats "pnUPPqHELLO01pnADsp12pnSPpnUPPqWORLD01prADsp01"
Original Rebmu string was: 46 characters.
Rebmu as mushed Rebol block molds to: 46 characters.
Unmushed Rebmu molds to: 62 characters.
Executing: [pn upp q hello 1 pn ad sp 12 pn sp pn upp q world 1 pr ad sp 1]
Hello, World!

Hangi oldukça mantıklı:

; print with no newline the result of doing an uppercase/part
; on the quoting of the symbolic word hello, of only the first
; N characters (where N is 1)
pn upp q hello 1

; print the character you get when you add 12 to the space
; character literal, a.k.a. comma...again no newline
pn ad sp 12

; print a space, no newline
pn sp

; do the same trick of printing the quoted word hello with the
; first letter converted to uppercase
pn upp q world 1

; print the character you get when you add 1 to the space
; character literal, a.k.a. exclamation point...with newline now
pr ad sp 1

4

T-SQL, 52

Ah, bu daha iyi! Doğrudan ikili dönüşüm, sadece 52 karakter.

SELECT CAST(0x48656C6C6F2C20576F726C6421 AS VARCHAR)

Önceden...

Bir daha zeki ve çalışacak Buna golfier çözüm var ise yarar bir =ve +(aranıyor standart msdb veri dahili ve EXEC-muktedir sorgu dizesi oluşturmak için kullanıyor)

Ama yapamadığımızdan beri, bu saf yaklaşımı elde edersiniz:

SELECT CHAR(72)SELECT CHAR(101)SELECT CHAR(108)SELECT CHAR(108)SELECT CHAR(111)SELECT CHAR(44)SELECT CHAR(32)SELECT CHAR(87)SELECT CHAR(111)SELECT CHAR(114)SELECT CHAR(108)SELECT CHAR(100)SELECT CHAR(33)

1
Biliyorum, birleştirme operatörlerinin eksikliği beni öldürüyor ... JavaScript ile yapmanın bir yolunu düşünmeye çalışıyorum ...
WallyWest

1
Evet, her ne kadar bu zorluk çoğunlukla saf cevaplar oluştursa da, ilginç birleşik olmayan yaklaşımlar bulmak için kesinlikle bazı ilginç beyin bükülmelerine ilham vermiştir.
Jonathan Van Matre

Daha iyisini yapabilirsin. SELECT yerine PRINT kullanın. Ve örtük olarak LTRIM () veya RTRIM () ile yayınlanır. Burada benzer bir şey yapıyorum .
Muqo

4

Python:

Pfff, alfanümerik sayısal kısmına ihtiyaç duyan kim?

from string import lowercase
from string import uppercase
from string import punctuation
print uppercase[len(str([[[len(str())]]]))]
print lowercase[len(str([[]]))]
print lowercase[len(str([[[[[len(str())]]]]]))]
print lowercase[len(str([[[[[len(str())]]]]]))]
print lowercase[len(str([[[[[[[]]]]]]]))]
print punctuation[len(str([[[[[len(str())]]]]]))]
print
print uppercase[len(str([[[[[[[[[[[]]]]]]]]]]]))]
print lowercase[len(str([[[[[[[]]]]]]]))]
print lowercase[len(str([[[[[[[[len(str())]]]]]]]]))]
print lowercase[len(str([[[[[len(str())]]]]]))]
print lowercase[len(str([len(str())]))]
print punctuation[len(str())]

Bu yerel ayarlara bağlıdır, bu nedenle milajınız değişebilir. Ancak, bu sonucu gerçekten çoğaltmak istiyorsanız, import ifadeleri yerine aşağıdakileri kullanabilirsiniz:

lowercase="abcdefghijklmnopqrstuvwxyz"
uppercase="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
punctuation="!\"#$%&'()*+,-./:;<=>?@[\]^_`{|}~"

(bu benim gönderimimin bir parçası değil, sadece rekreasyon için yerellerimi paylaşıyor)


4

J - 73 karakter

Bu olabilir sonuçta yapılacak!

72 101 108 108 111 44 32 87 111 114 108 100 33{do 1 8{show 0 def 0
take
)

İşte J hakkında bir şey . İlkellerin çoğu ASCII noktalama işaretleri, ardından iki nokta veya iki noktaya kadar. Noktalama işaretlerinden yapılmayan ilkel karakterler, iki nokta veya iki noktadan sonra gelen alfanümerik bir karakterdir. Yani, bunların dışında hiçbirine izin vermiyoruz { } [ ]. [ve ]kimlik fiilleridir ve bu nedenle işe yaramazlar.

Neyse ki, {dizileri dizine eklersek, yani, her bir ASCII karakterinin ( Alfabe olaraka. adlandırılan ) bir dizesini olsaydı, harfleri ASCII kod noktalarından çıkarabilirdik. Ayrıca, karakter dizileri yapmak için de bir yedekleme yöntemimiz var , sonra bir şeyler ve sonra da bir yalnızız ; Standart kütüphanede takma adı olan kolon ,.0 : 0)def

Sonra standart kütüphanede showbir fiil var, eğer ismini bir dize olarak iletirseniz, size fiilin iç gösterimini verir. doBir dize değerlendirecek başka bir fiil var . Öyleyse a., bu temsillerden herhangi birini çıkarabilirsek, bunu değerlendirebilir ve çekebiliriz Hello, World!.

Bizim kurtarıcı şeklinde gelir takeiçin bir takma, {.o bir sahip aadında. show'take'geri döneceğiz take=: {., bu yüzden bizim a.ve böylece bir çözümümüz var.

Standart kütüphaneden {esas olarak eşdeğerini kullanarak kurtulabiliriz pick, ancak en sondaki parenden kaçınılamaz.

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.