Merhaba Dünya 0.0!


78

Dilbert harika
kaynak: Dilbert, 8 Eylül 1992

Klasik "Merhaba Dünya!" 'Ya yeni bir bakış atmayı umuyorum. programı.

Hello World!Olmadan çıkan bir programı kodlayın :

  • Dize / Karakter değişmezleri
  • Sayılar (herhangi bir temel)
  • "Hello World!" Döndüren önceden oluşturulmuş işlevler
  • RegEx değişmezleri

"O" ve 0 istisnaları hariç .

† "O" büyük harfle yazılır, "o" kabul edilemez.


4
[Code-golf] ve [code-challenge] 'dan biri lütfen ikisini de değil. İnsanların kullanmak istedikleri kurallarla soru bulmalarına yardımcı olmak için bu etiketlerin amacı. Esasen bu sitedeki her soru bir çeşit oyun olmalı.
dmckee

4
-1 Çoktan Merhaba Dünya'yı şaşırttık ve bence bu meydan okuma çok benzer. Ben bir mod olmasaydım, "kopya kadar yakın" bir oy kullanırdım.
Chris Jester-Young

2
@zzzzBov: "Merhaba dünya" temasında başka bir soruyu garanti etmenin yeterince farklı olduğunu sanmıyorum; farklı bir tema daha iyi olurdu. Ama bu sadece benim düşüncem.
Chris Jester-Young

1
Bence bu iyi bir kod golf - ve öncekinden daha iyi.
MtnViewMark 12:11

2
Bazı insanlar bunun "O"*sıfır da dahil olmak üzere herhangi bir sayıda O ile ilgili bir dizgenin olabileceği anlamına geldiğini düşünüyor gibi görünmektedir . Bunun niyet olduğunu sanmıyorum. Lütfen açıkla.
Timwi

Yanıtlar:


83

Windows PowerShell, çok fazla

Evet, aslında, (neredeyse sadece) sıfırları kullanarak bir "Merhaba dünya« yazmamız gerekti ...

&{-join[char[]]($args|% Length)} `
O00000000000000000000000000000000000000000000000000000000000000000000000 `
O0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O0000000000000000000000000000000 `
O00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 `
O00000000000000000000000000000000

Daha ciddi bir notta:

Windows PowerShell, 25

Write-Host Hello World!

Dize değişmez. Hello World!Orada sadece edilecek olur ayrıştırılan PowerShell beri bir dize var argüman ayrıştırma modunda olduğu gibi.


2
Bu nasıl gerçek? O_o
Josh

1
Bazı örnekler veya tarihçesi için interneti araştırdım. Bu çok garip. Herhangi bir link verebilir misiniz?
Caleb Jares,

1
"Günün geri döndüğü". :) Siz bin yıl beni çatlatıyor 👍

Ah. Tekli. Anladım.
Matthew Roh

86

C, 327 karakter

#define O(O)-~O
#define OO(o)O(O(o))
#define Oo(o)OO(OO(o))
#define oO(o)Oo(Oo(o))
#define oo(o)oO(oO(o))
#define O0 putchar
main() {
    O0(OO(oO(!O0(~O(Oo(OO(-O0(~O(Oo(-O0(O(OO(O0(oo(oO(O0(O(oo(oO(OO(Oo(oo(oO(
    O0(oo(oo(!O0(O(OO(O0(O0(O(OO(Oo(O0(O(Oo(oo(oO(O0(oo(oo(oO(oo(oo(0))))))))
    ))))))))))))))))))))))))))))))))))))));
}

Garip bir şekilde, ön işleme tabi tutulduktan sonra güzelliğini kaybetmez:

main() {
putchar(-~-~-~-~-~-~-~-~-~-~!putchar(~-~-~-~-~-~-~-~-putchar(~-~-~-~-~-~-
putchar(-~-~-~putchar(-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~putchar(
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~putchar(-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
-~-~-~-~-~-~-~-~-~-~-~-~-~!putchar(-~-~-~putchar(putchar(-~-~-~-~-~-~-~putchar
(-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~putchar(-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~0))))))))))));
}

2
Muhteşem. Yine de!
Mark Reed

1
Bu gerçek sanat!
Askaga

Vücudun daha fazla ön işlemciyle daha da kısaltılabileceğini hissediyorum. Bir bütün olarak kod olsa yararına olacağından emin değilim.
Zwei

@Zwei, Kısaltmak kesinlikle mümkün. En uygun makro grubunu bulmak için hiçbir çaba göstermedim.
ugoren

Neden CLANG #define'e parenler dahil etmiyorsunuz? birkaç bayt kurtarır, değil mi? Düzenleme: nevermind, sadece denedim ve şimdi bunun neden işe yaramayacağını görüyorum
Albert Renshaw

52

BrainFuck, 102 111 karakter

++++++++[>++++[>++>+++>+++>+<<<<-]>+>->+>>+[<]<-]>>.>>---.+++++++..+++.>.<<-.>.+++.------.--------.>+.

Tüm kurallara uygundur.

Kredi Daniel Cristofani'ye gidiyor .


1
Kuralların da belirtilmesi gerekip gerekmediğine karar veremiyorum 0 and/or "O" must be used. BrainFuck ve golfscript için küçük bir anlam ifade ediyor, ancak bu zorlukla tam olarak zorlanmıyorlar.
zzzzBov

34
@zzzzBov: Eğer kullanılması gerekiyorsa , Brainfuck kodu sadece onları içerecektir. Yine de programı etkilemiyorlar.
Joey

38

C, 182 bayt

#define decode(c,o,d,e,g,O,l,f) e##c##d##o
#define HelloWorld decode(a,n,i,m,a,t,e,d)
#define Puzzles(flog) #flog
#define CodeGolf Puzzles(Hello World!)
HelloWorld(){puts(CodeGolf);}

1
+ 1, Lol, Hala belirteç yapıştırma operatörü numarası kullanıyorsunuz! Nice mate :-)
Quixotic

35

C programı - 45

(hile)

Lexically, bu herhangi bir string değişmez veya regex değişmezleri kullanmaz. C önişlemcisinin stringization özelliğinden faydalanır . s(x)argümanını dizgeye dönüştüren bir makrodur.

#define s(x)#x
main(){puts(s(Hello World!));}

3
"Lexically" çok uygun bir kavram için :) Ama arsızlık FTW!
JB

24

Haskell - 143 karakter

o%y=o.o.o$y;o&y=(o%)%y;o!y=o$o$(o%)&y
r=succ;w=pred;a=r%y;e=r$w&l;l=r!'O';o=r e;u=(w&)&a;y=r%l
main=putStrLn[w!o,o,l,l,y,w u,w$r&'O',y,a,l,e,u]

oy, bu yünlü oldu!

Sayı yok, sayısal işlem yok, eğlence için yeniden adlandırılan değişkenler.

Bazı fuarlar güzel olabilir:

  • o%y, o&yVe o!yher bir fonksiyonu uygular oiçin ysırasıyla 3, 9 ve 29 kat: birden çok kez. 29?!?! Evet 29!
  • rve wyukarıdaki ve üst düzey işlevler kullanılarak uygulandığında ihtiyaç duyulan tüm karakterleri elde etmek için yapılabilecek olan sonraki ve önceki karakterlerdir 'O'.

İhtiyaç duyulan atlamaların sırası:

'O' +29    -> 'l'
'O'  +9 -1 -> 'W'
'l'  -9 +1 -> 'd'
'l'  +3    -> 'o'
'd'  +1    -> 'e'
'o'  +3    -> 'r'
'e' -29    -> 'H'
'r' -81    -> '!'
'!'  -1    -> ' '

  • Düzenleme: (134 -> 144) Bir ünlem işareti çıkarmayı unuttum, iç.
  • Düzenleme: (144 -> 143) bir gereksiz Kaldırıldı $yeniden adlandırılmış #için !Hugs için.

1
çirkin mi? oo ....
Joey Adams


@ Nyuszika7H Bunun nedeni, bu hizmetin bazı derleyici seçeneklerini varsayılan olarak açmasıdır. Düz GHC ile derlenmelidir.
FUZxxl

@ Nyuszika7H Bu GHC ile sadece iyi çalışıyor. Sorun şu ki, hizmetin 2006’dan itibaren Hugs kullanıyor olması. Hugs'in baş edemediği iki şey var gibi görünüyor: 1) Bir operatör olarak '#' kullanımı. '!' Olarak değiştiriliyor çalışmasını sağlar. 2) Hugs'in monomorfizm kısıtlamasını nasıl uyguladığına dair tanımları r=succve sonuçları w=pred. Değiştirilmesi r x=succ xve w x=pred xçalışmasını sağlar (4 karakter pahasına). Bunlar Hugs'ta sorun gibi görünüyor.
MtnViewMark

@Community düzenlemesinden sonra hala geçerli mi?
Hosch250

22

Tekli , 10 197 1137672766964589547169964037018563746793726105983919528073581559828 bayt

Bunu henüz kimsenin yapmamasına şaşırdım ...

Burada göndermek için çok uzun, ama bu 1137672766964589547169964037018563746793726105983919528073581559828 sıfır.

Veya daha kolay okunur: ~ 10 67 sıfır.

10 197 bayt tasarruf için @dzaima teşekkürler


2
"Bir keresinde yalnızca bir sıfır kullanarak tüm veritabanını yazdım" okuduğumda ilk düşüncem "onu tekdüze bir şekilde yapmış olmalı" idi. Çizgi romanın yaptığı gibi çalışacak tek cevap olduğu için +1
Cyoce

21

Mathematica 12 karakter

Sadece semboller, karakter yok.

Hello World!   

! faktoring operatörüdür, ancak Merhaba ve Dünya tanımsız olduğu için, girdiyi değiştirmeden döndürür.

Programı biraz değiştirirsek:

Hello=2;
World=3;
Hello World!  

Sonra yazdırır 12(2 * 3!)


16

i386 montajı (Linux, gcc sözdizimi), 440 442 435

Bugün benim meclis günüm ve ondan sonra bir süre yetecek. 128 numaraya kendime izin verdim, nedenini tartışmak için programa bakınız. Olağanüstü bir şey değil: Sadece "Merhaba Dünya!" montaj sabitleri, bunun sayısal sabitler olmadan mantıklı olduğu ve geri kalanına aritmetik ile doldurulduğu yer.

#define M mov
M $0,%ecx;inc %cx;M %ecx,%ebx;inc %cx;M %ecx,%eax;add %ax,%ax
M %ecx,%edx;shl %cl,%dx;M (e),%ch;add %dl,%ch;dec %ch;M %ch,(l)
M %ch,(j);M %ch,(z);M $0,%ch;shl %cl,%edx;M %dl,(s);inc %dl
M %dl,(b);M (o),%dl;M %dl,(u);add %al,%dl;dec %dl;M %dl,(r)
M $m,%ecx;M $n,%edx;int $c;M %ebx,%eax;M $0,%ebx;int $c
.data
m:dec %eax;e:gs;l:es;j:es;o:outsl (%esi),(%dx)
s:es;push %edi;u:es;r:es;z:es;fs;b:es;n=.-m
t=(n+n)/n;c=t<<(t*t+t)

( gcc -nostartfiles hello.S -o hellomuhtemelen -m32kemerinize bağlı olarak monte edin)

Neden 128 için tolerans? Bir şey göstermek için sistemlere ihtiyacım var; Linux sistem çağrıları INT 80h (128 ondalık); INT için sadece operand formatı anındadır, bu yüzden orada bir sabitten başka bir şeye sahip olmak mümkün değildir (koda). Ben olabilir (ayık olsun sonra) kodu, muhtemelen diğer sembolik sabitler bir fonksiyonu olarak ifade girişiminde n , ama bu gidiyor çok pek kazanç için sıkıcı. Sayıların kısıtlamasını ASCII kodlamasını önlemenin bir yolu olarak okudum ve kesinlikle burada yaptığım şey bu değil, bu yüzden bunu sunacak kadar masum hissediyorum. (FWIW, ayrıca kendiliğinden değiştirilen kodu da denedim, ancak bu bölüm değişti) Artık 128 tane de kalmadı. Kod saf!

  • Edit1 , satırları kurtarmak için yeniden biçimlendirildi; Sayısal 1 kaldırıldı (kimse fark etmedi mi ?!)
  • Edit2mov CPP makroları ile sıkıştırılmış ; Kalan 128 ortadan kaldırıldı.

6
Gerçek erkekler program böyle.
Nit

14

Javascript - 305

Biraz uzun ama kullanılan yöntemi seviyorum.

O=0;O++;O=O.toString();alert([O+0+0+O+0+0+0,0+O+O+0+0+O+0+O,O+O+0+O+O+0+0,O+O+0+O+O+0+0,O+O+0+O+O+O+O,O+0+0+0+0+0,O+0+O+0+O+O+O,O+O+0+O+O+O+O, O+O+O+0+0+O+0,O+O+0+O+O+0+0,O+O+0+0+O+0+0,O+0+0+0+0+O].map(function(e){O=0;O++;O++;return String.fromCharCode(parseInt(e,O))}).reduce(function (a,b){return a+b}))

Bunu sevdim. Sanki fonksiyon parametreleri ile daha iyi olurdu OO, OOOartık bunu yapmak, ama tabii ki.
zzzzBov

Gerçekten hoş. ', New String ()' sonunda orada olması gerekiyor mu? Onsuz çalışmak gibi görünüyor.
Stephen Perelson

3
Ah, hayır değil. Bazen Javascript'in ne kadar zayıf yazıldığını unutuyorum.
david4dev

Siz de 0 bit ('0+') bırakmanıza gerek yoktur ve alan ile ünlemde iki tane 0 bit vardır. 28 karakterin toplam azaltılması.
Stephen Perelson

10

C # (131 karakter)

141 karakter 142 karakter

enum X{Hello,World,A,B=A<<A<<A}class Y{static void Main(){var c=(char)X.B;System.Console.Write(X.Hello.ToString()+c+++X.World+c);}}

Okunabilir:

// Define some constants (B = 32)
enum X { Hello, World, A, B = A << A << A }
class Y
{
    static void Main()
    {
        // Generate the space (character #32)
        var c = (char) X.B;

        // Remember that “!” is character #33
        System.Console.Write(X.Hello.ToString() + c++ + X.World + c);
    }
}

2
bu bükülmüş ve güzel. Onu seviyorum.
jcolebrand

+1 Belirli sayıları oluşturmak için güzel bir yol. Bunu hatırlamalıyım!
Igby Largeman

LINQPad programı, 102 karakter:enum X{Hello,World,A,B=A<<A<<A}void Main(){var c=(char)X.B;(X.Hello.ToString()+c+++X.World+c).Dump();}
Coeur

.ToString()-> +""bazı cahrları kurtarıyor
Firo

2
@Firo: ... ve kuralları çiğniyor. (Dizi değişmezine izin verilmez.)
Timwi

8

JavaScript, 88

t=!0<<-~-~-~-~!0
r=[]
for(i in{Hello:"O",World:0})r+=i+String.fromCharCode(t++)
alert(r)

99

@Timwi'ye önerileriniz için çok teşekkürler

üçlü operatör kaldırıldı:

o={Hello:"O",World:0}
t=!0<<-~-~-~-~!0
c=String.fromCharCode
r=c(0)
for(i in o)r+=i+c(t++)
alert(r)

103 diğer
adıString.fromCharCode

o={Hello:"O",World:0}
t=!0<<-~-~-~-~!0
c=String.fromCharCode
for(i in o)o[i]?r=i+c(t):alert(r+i+c(++t))

117
Eğer varsa üçlü operatöre geçildi

o={Hello:"O",World:0},t=!0<<-~-~-~-~!0
for(i in o)o[i]?r=i+String.fromCharCode(t):alert(r+i+String.fromCharCode(++t))

125
Ben tutuyorum "O"sadece programda bir "O" var.

o={Hello:"O",World:0},t=!0<<-~-~-~-~!0
for(i in o)if(o[i])r=i+String.fromCharCode(t)
else alert(r+i+String.fromCharCode(++t))

133

o={Hello:"O",World:0},t=!0<<(!0+!0<<!0)+!0
for(i in o)if(o[i])r=i+String.fromCharCode(t)
else r+=i+String.fromCharCode(t+!0)
alert(r)

@Joey, esas mesele bu.
zzzzBov

@Joey, codegolf meta üzerinde, başkalarını çeşitli farklı yaklaşımları denemeye teşvik etmek için bir süre kendi sorularına cevap vermekten kaçınması gerektiğini okudum. Planım onu ​​bir iki gün içinde rahatsız etmekti.
zzzzBov

@Joey, o zamanlar kendi makinemde çalışmıyordu ve bir yorumda gönderebildiğimde yanıtı kendime e-postayla göndermek istemedim.
zzzzBov

@Joey: “Bunlardan sadece beşi var” yanlıştır. Herkes bir düzenleme önerebilir. Sadece "link" ve "flag" arasında "düzenle" yi tıkladığınızda kodu görebilirsiniz.
John

@zzz: "büyük ölçüde mesele bu" Herkes onu hala görebilir. Herkes "link" ile "flag" arasında "düzenle" yi tıklayarak bir düzenleme önerebilir, bu da düzenleme iletişim kutusunu açar ve kodunuzu ortaya çıkarır.
John

7

GolfScript, 63 karakter

[0))):O.)?O.*-.O.?+)).O.*+((..O+.O(.O+?.O-O*@.O+O.+$.O.*-).O/]+

Ne, henüz GolfScript girişi yok mu?

Bu, tek bir sayısal hazır bilgi 0ve O(sayıyı saklamak için kullanılan) adlı bir değişken kullanır 3. Geriye kalan her şey aritmetik ve yığın manipülasyonudur. Dize Hello World!ASCII kodlarından, karakter karakter inşa edilmiştir.

İşte nasıl çalışıyor:

[             # insert start-of-array marker
  0))):O      # increment 0 thrice to get 3, and save it in the variable O
  .)?O.*-     # calculate 3^(3+1) - 3*3 = 81 - 9 = 72 = "H" 
  .O.?+))     # calculate 72 + 3^3 + 1 + 1 = 72 + 27 + 2 = 101 = "e"
  .O.*+((     # calculate 101 + 3*3 - 1 - 1 = 101 + 9 - 2 = 108 = "l"
  .           # ...and duplicate it for another "l"
  .O+         # calculate 108 + 3 = 111 = "o"
  .           # ...and duplicate it for later use
  O(.O+?      # calculate (3-1)^(3-1+3) = 2^5 = 32 = " "
  .O-O*       # calculate (32 - 3) * 3 = 29 * 3 = 87 = "W"
  @           # pull the second 111 = "o" to the top of the stack
  .O+         # calculate 111 + 3 = 114 = "r"
  O.+$        # copy the (3+3 = 6)th last element on the stack, 108 = "l", to top
  .O.*-)      # calculate 108 - (3*3) + 1 = 108 - 9 + 1 = 100 = "d"
  .O/         # calculate int(100 / 3) = 33 = "!"
]             # collect everything after the [ into an array
+             # stringify the array by appending it to the input string

7

Brainfuck, 111 bayt

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++
.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
------.--------.>+.>.

Algoritma açıkladı

Increment cell 0 to 10 (it will be loop counter)
Repeat 10 times ; will stop at cell 0
  Increment cell 1 to 7
  Increment cell 2 to 10
  Increment cell 3 to 3
  Increment cell 4 to 1
Increment cell 1 by 2 and output it ; Thus, output ASCII 72 'H'
etc. for all symbols in 'Hello World!'

Döngü olmadan daha uzun sürüm, 389 bayt:

+++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++.+++++++++++++++++
++++++++++++.+++++++..+++.-------------------
---------------------------------------------
---------------.+++++++++++++++++++++++++++++
++++++++++++++++++++++++++.++++++++++++++++++
++++++.+++.------.--------.------------------
---------------------------------------------
----.-----------------------.

Bu bir kod golf bilmecesi, amaç mümkün olan en kısa programı yapmaktır. Bunun bir kısmı, kodunuzun uzunluğunu kaydetmeyi içerir.
zzzzBov

5

Lua 144 97 86 karakter

Tablo tuşlarının da karakter dizisi olduğu ve #Hello == #World == 32 == string.byte '\ n' olduğu gerçeğine dayanan farklı bir yaklaşım

e=#"O"t=e+e for k,v in pairs{Hello=0,World=e}do T=t^#k io.write(k,string.char(T+v))end

145 karakter çözümü

  • "O" veya 0 dışında karakter yok
  • Regex yok
  • önceden oluşturulmuş işlev yok

Delta bayt kodlaması yaptım, sonra bazı primenumbers vs.

Golf versiyonu:

e=#"O"d=e+e t=d+e v=d+t z=v+t T=t^d*d^t n=0 for l,m in pairs{T,T/t-z,z,0,d,-T-z,z*z+t*d,T/d,d,-d*t,-t^d,-T+v}do n=n+m io.write(string.char(n))end

Yorumlananlar:

-- without numbers, strings, regex
-- except "O" and 0
e=#"0"
t=e+e --2
d=t+e -- 3
v=d+t -- 5
z=v+t -- 7
n=0
T=t^d*d^t -- 72 = 2^3+3^2
for l,m in pairs{T, --72
T/t-z, -- 29 = 72/2-7
z, --7
0, -- 0
d, -- 3
-T-z, -- -79 = -72 - 7
z*z+t*d, -- 55 = 7*7 + 2*3
T/d, -- 24 = 72/3
d, -- 3
-d*t, -- -6
-t^d, -- -8
-T+v -- -67 = -72+5
} do
    n=n+q[k]
    io.write(string.char(n))
end

Düzenleme: Birden çok O dizesini değiştirdi ve daha fazla optimizasyon buldu.


"O" * - Sanırım * dipnot için değil, "O'nun herhangi bir sayısı
RomanSt

Regex'ing doğal olarak yaptığım şey: p. Sırasıyla ilk ve ikinci çözüm için 5 veya 3 ekstra karakter pahasına değiştirebilir miyim
jpjacobs

Ama yine de, ben onları düzenleyeceğim, kafaları için teşekkürler
jpjacobs 12:11

Tablo yapıcısındaki merhaba ve dünya hala yazı dizileridir - bu sadece bir sözdizimi şekeridir.
Oleg V. Volkov

5

Python ( 126 130)

O=ord("O")
N=O/O
T=N+N
R=N+T
E=T**R
E<<T
print'O'[0].join(chr(c+O)for c in[N-E,E*R-T,_-R,_-R,_,N-_-E-E,E,_,_+R,_-R,E*R-R,T-_-E-E])

Değişmez ''izin verilmez.
RomanSt

1
@romkyns: Çok doğru, düzeltildi.
Hoa Long Tam

5
Sabit değil (yanlış çıkış). Muhtemelen düşünüyorsun [:0].
WolframH

5

J, 250

oo=:#a.
o0=:<.o.^0
o0o=:%:%:%:oo
ooo=:p:^:(-*oo)
o=:<.(^^^0)*(^^0)*(^^0)
o00=:o,~(,[)o0(**(**[))o0o
oo0=:*/p:(!0),>:p:!0
echo u:(o0(**(**]))o0o),(ooo ooo ooo(o.o.^^^0)*oo),o00,(+:%:oo),(oo0-~!p:>:>:0),o,(<.-:o.o.^o.^0),(>:p:(]^])#o00),(*:#0,#:oo),oo0

Bununla tamamen çok eğlendim ve önyüklemek için biraz daha J öğrendim. Ayrıca, ooo ooo oooşimdiye kadar yazdığım en aptal kod olabilir.


5

Yarım bloklu QR (169) 121 karakter

QR-Code ile UTF-8 Yarım-blok karakterleri kullanarak:

▗▄▄▄▗▄▖▗▄▄▄  
▐▗▄▐▝█▙▐▗▄▐  
▐▐█▐▝▄ ▐▐█▐  
▐▄▄▟▗▗▗▐▄▄▟  
▗▗▖▄▞▝ ▗ ▖▄  
 ▟▜ Code ▀▟  
 ▙▀ Golf ▘▚  
▗▄▄▄▐▗▘▟▙▝▝  
▐▗▄▐▝▀▛▘▘█▖  
▐▐█▐▐▖▐▝▖▜▘  
▐▄▄▟▗ ▌█▛▗▝  3

Maalesef, bu orada güzel bir şekilde yapmaz. Uygun stil sayfası ile küçük bir pasaj var, ama .. Hayır! Burada sunulan dil HTML değil ! Burada sunulan dil QR Code ! (HTML ve CSS burada yalnızca sunum hatalarını çözmek için kullanılır!)

Yarım bloklu QR (169)

  ▛▀▀▌▚▝▐▀▌▛▀▀▌
  ▌█▌▌▖▞▚▚▘▌█▌▌
  ▌▀▘▌ ▚▛▞ ▌▀▘▌
  ▀▀▀▘▚▌▙▘▌▀▀▀▘
  ▄▙▛▚▜▀▄▀█▖▝▄▌
  ▖▄▄▘▖▄▄▄▟▗ ▀▘
  ▜Code  golf!▌
  ▚▟▘▘▝▙▛▚▐▀▖▜▘
  ▘▘ ▀▛▗▚▗▛▀▌▄ 
  ▛▀▀▌▟▌▜▖▌▘█▐▘
  ▌█▌▌▘█▌▟█▜▙▐ 
  ▌▀▘▌▚▌▌█▗▝▌▚▘
  ▀▀▀▘ ▝▘▘▀▀▀▀▘

Fikir olarak, bu gibi görünebilir:

QR: Merhaba Dünya!


Bunu veya zbarLinux altında görmek için akıllı telefonunuzu kullanın . (örnek: xwd | xwdtopnm | zbarimg /dev/stdin)
F. Hauri

Is not Code golf!bir karakter değişmezi?
ugoren

2
Aslında bu cevabın yaratıcı olsa da, bir program olmadığı için uygun olmadığını düşünüyorum. QR, bir programlama dili değil, verileri kodlamanın bir yoludur.
ugoren

1
Ayrıca ne hakkında dilleri gibi postscript, svgya da diğer sunum dilleri zaten orada kullanılan !? Kodlamanın bir yolu zaten bir dil ... Sanırım!
F. Hauri,

1
Dil olmayanlara örnek olarak HTML (eksi JS) kullandım. Aynı QR için de geçerli. Bu kriterlere bakınız .
ugoren

4

Ölçek ( 357 423 361 karakter)

En kısa cevap değil, ne yazık ki, ancak en fazla kullanım için bonus notları almayı umuyor 'O've'0'

def h(){type t=scala.Char;def OO(c:t)={(c-('O'/'O')).toChar};def O(c:t)={OO(OO(OO(c)))};def O00(c:t)={(c+('O'/'O')).toChar};def O0(c:t)={O00(O00(O00(c)))};val l=O('O');val z=O0(O0(O0(O0(O0(O0(O0(O0(O0(O0(O0(0)))))))))));print(OO(O(O('O'))).toString+(OO(O(O(O('O')))).toString+l+l+'O'+OO(z)+O0(O0(O0(OO('O'))))+'O'+O0('O')+l+OO(OO(O(O(O('O')))))+z).toLowerCase)}

Önceden:

def h(){type t=scala.Char;print(OO(O(O('O'))).toString+(OO(O(O(O('O')))).toString+O('O')+O('O')+'O'+OO(O0(O0(O0(O0(O0(O0(O0(O0(O0(O0(O0(0))))))))))))+O0(O0(O0(OO('O'))))+'O'+O0('O')+O('O')+OO(OO(O(O(O('O')))))+O0(O0(O0(O0(O0(O0(O0(O0(O0(O0(O0(0)))))))))))).toLowerCase);def OO[Char](c:t)={(c-('O'/'O')).toChar};def O[Char](c:t)={OO(OO(OO(c)))};def O00[Char](c:t)={(c+('O'/'O')).toChar};def O0[Char](c:t)={O00(O00(O00(c)))}}

Eski (yasadışı) sürüm:

def h(){type t=scala.Char;print(""+OO(O(O('O')))+(""+OO(O(O(O('O'))))+O('O')+O('O')+'O'+OO(O(O(O(O(O('0'))))))+O0(O0(O0(OO('O'))))+'O'+O0('O')+O('O')+OO(OO(O(O(O('O')))))+O(O(O(O(O('0')))))).toLowerCase);def O0[Char](c:t)={O00(O00(O00(c)))};def O[Char](c:t)={OO(OO(OO(c)))};def OO[Char](c:t)={(c-('O'/'O')).toChar};def O00[Char](c:t)={(c+('O'/'O')).toChar}}

Empty string ( "") ve zero ( '0') karakterini içeren string / karakter değişmezlerine izin verilmediğine inanıyorum . Sadece dize "O"(büyük O) ve sayı 0.
Timwi

Kahretsin. Bazı düzenleme sonra gerekli ...
Gareth

4

C (veya C ++) (vücut segmenti: 49) (hile)

derlerken, çağrılan bir ikiliyi derlemek için Hello\ World\!kod:

#include <stdio.h>
#include <string.h>
int main(int i,char**a)
{
  int j=i+i,k=j<<j;puts(strrchr(*a,'O'-(k<<j))+i);
}

strrchrSegment geçirilen program adı tam yolunu da içeren durumunda tam yolunu kaldırmak için gereklidir hiçbir argüman başarmış olması ..

Tipik derleme satırı şöyle olabilir: gcc -o Hello\ World\! foo.c


3

C ++, 141 146

Bunlardan birini ilk kez denediğinizde, muhtemelen biraz daha geliştirilebilir:

char o='O'/'O',T=o+o,X=T+o,f=T+X,t=f+f,F=t*f,h=F+F,l=h+t-T,O=l+X;
char c[]={F+t+t+T,h+o,l,l,O,o<<f,h-t-X,O,l+f+o,l,h,0};
cout<<c;

DÜZENLE:

Başka bir gönderiden ayrılma oyununu çaldım, bunu düşünmediğime inanamıyorum :(


1
Sen teknik olarak herhangi dahil kütüphaneler, ana gibi öğeleri de içeren karakter sayısına tüm çalışma programını kapsayacak şekilde zannediyorsunuz std::, vs vs
Wug

3

Haskell - 146

a:b:c:f:g:s:j:z=iterate(\x->x+x)$succ 0
y=[f+j,d+a,c+s+h,l,a+b+l,s,f-s+o,o,a+b+o,l,l-f,a+s]
[h,e,l,_,o,_,w,_,r,_,d,x]=y
main=putStrLn$map toEnum y

Desen eşleşmesinin Haskell'e kocaman bir bacak vereceğini düşündüm, özellikle de iki gücün gücünü başlatabilirsin:

one:two:four:eight:sixteen:thirty_two:sixty_four:the_rest = iterate (*2) 1

Bununla birlikte, MtnViewMark'ın Haskell cevabında (bu arada pek çok yükseltme hak ediyor) ve diğer cevaplarda da görüldüğü gibi, sadece +ve daha fazlası kullanılarak daha iyi sıkıştırma elde edilebilir -.


3

Clojure - 46 karakter

(map print(butlast(rest(str'(Hello World!)))))

Bunun Hellove World!herhangi bir kelimenin anlamıyla değil sembollerin olduğuna dikkat edin .


3

C ++

/*
Hello World!
*/
#define CodeGolf(r) #r
#include<iostream>
using namespace std;
int main()
{
    char str[*"O"];
    freopen(__FILE__,CodeGolf(r),stdin);
    gets(str);gets(str);puts(str);
}

1
100Sayılarla ilgili kuralı ihlal ediyor. Lütfen daha eğlenceli bir şeyle değiştirin.
Joey Adams

@ joey-adams Gösterdiğiniz için teşekkürler. Bunu değiştirdim.
fR0DDY

Line 7: error: ISO C++ forbids declaration of 'main' with no type
Nathan Osman

@ george-edison Düzeltildi. Olmadan intg ++ üzerinde çalıştı rağmen
fR0DDY

3

PHP - 49 karakter

<?=Hello.chr(($a=-~-~-~0).~-$a).World.chr($a.$a);

Değişiklik Günlüğü :

  • (73 -> 86) ... çıkışına ünlem Unuttum iç çekiş
  • (86 -> 57) Artımlı olan tek bir değişken kullanır
  • (57 -> 51) Bit yönünde operatörleri 0’da kullanmak için değiştirildi
  • (51 -> 49) Daha fazla bit operatörü

1
Sabitlerin dönüşümler nedeniyle string değişmezleri olarak sayılacağından eminim.
Kevin Brown

@ Bass5098 Düzenlemeniz için teşekkürler! Onayladım.
nyuszika7h

@ Bass5098 çalışmıyorsa, 21 ve 22 karakterlerinde değil, 32 ve 33 karakterlerinde olması gerekir <?$a=-~-~-~0;echo Hello.chr($a.$a-1).World.chr($a.$a);, ancak 54 karakterdir.
zzzzBov

@zzzzBov Başlangıçta düzenlemeyi nasıl temizleyeceğimi bilemedim ve onaylandıktan sonra geri almayı unuttum.
Kevin Brown

ağrıyor, 1içeride bıraktım . Orada kendi kurallarimi alayim ... kullanmam <?$a=-~-~-~0;echo Hello,chr($a.~-$a),World,chr($a.$a);gereken buydu, hala 54 karakter.
zzzzBov

3

Python, 106

o=-~-~-~0
L=o+o
d,W=-~L,o**o
_=o*W
print str().join(chr(L+W+_-i)for i in[d*L,L+d,L,L,o,-~_,W,o,0,L,d+d,_])

Str () yerine '' (daha önce boşluk
bırakmadan

2
Ayrıca, çok güzel! :) BTW, çoklu atama herhangi bir karakter
kaydetmiyor

@aditsu: Yapamam, bu bir dizgenin değişmezi olur. Yorumlarınız için teşekkürler. :)
flornquake

Üzgünüz, bir şekilde boş dize aklımda değişmez olarak kaydedilmedi
aditsu 20.03

3

Perl, 186 bayt

@A=(0,0,0,0);@B=(@A,@A);@C=(@B,@B);@D=(@C,@C);@E=(@D,@D);@d=(@E,@D,@A);$l=[@d,@B];$o=[@$l,0,0,0];print(chr@$_)for[@E,@B],[@d,0],$l,$l,$o,\@D,[@E,@C,@A,0,0,0],$o,[@$o,0,0,0],$l,\@d,[@D,0]

Her karakter dizisi, bir dizinin uzunluğu olan sıra numarası üzerinden yazdırılır. Dizilerin yapısı, karakter sayılarının ikili gösterimi ile optimize edilmiştir.

Ungolfed:

@A = (0, 0, 0, 0);          # A = 2^2
@B = (@A, @A);              # B = 2^3
@C = (@B, @B);              # C = 2^4
@D = (@C, @C);              # D = 2^5
@E = (@D, @D);              # E = 2^6

# d = 100 = 0x64 = 1100100b
@d = (@E, @D, @A);          # d = 2^6 + 2^5 + 2^2 

# l = 108 = 0x6C = 1101100b
$l = [@d, @B];              # l = d + 2^3

# o = 111 = 0x6F = 1101111b
$o = [@$l, 0, 0, 0];        # o = l + 3

print (chr @$_) for
    [@E, @B],              # "H"    H  =  72 = 0x48 = 1001000b = 2^6 + 2^3
    [@d, 0],               # "e"    e  = 101 = 0x65 = 1100101b = d + 1  
    $l, $l, $o,            # "llo"
    \@D,                   # " "   ' ' =  32 = 0x20 = 0100000b = 2^5
    [@E, @C, @A, 0, 0, 0], # "W"    W  =  87 = 0x57 = 1010111b = 2^6 + 2^4 + 2^2 + 3
    $o,                    # "o"
    [@$o, 0, 0, 0],        # "r"    r  = 114 = 0x72 = 1110010b = o + 3
    $l, \@d,               # "ld"
    [@D,0]                 # "!"    !  =  33 = 0x21 = 0100001b = 2^5 + 1

Görünüşe göre benim ikili
votka

3

Java 389 karakter

gereksiz bir beyanda bulundu

class A{static int a=0,b=a++,f=a,e=a++;static char p(String s){return(char)Byte.parseByte(s,a);}public static void main(String[]z){long x=e,y=b;String c=((Long)x).toString(),d=((Long)y).toString();char l=p(c+c+d+c+c+d+d),m=p(c+c+d+d+c+d+c),o=(char)(l+a+f),_=p(c+d+d+d+d+d),$=_++;System.out.print(new char[]{p(c+d+d+c+d+d+d),m,l,l,o,$,p(c+d+c+d+c+c+c),o,(char)(o+a+f),l,(char)(m-f),_});}}

Tarih düzenleme geçmişinde artık orijinal ungolfed versiyonu okunuyor:

// H  e  l    l   o      W  o  r   l    d  !
//72,101,108,108,111,32,87,111,114,108,100 33
import static java.lang.Integer.*;
class A
{


    public static void main(String[] args)
    {
        Integer a=0,b=a++,e=a++;  // making a 0 a 1 and a 2 which is required later;
        String c=e.toString(),d=b.toString(),z=c.substring(0,0);  //

        String H = ((char)parseInt(d+c+d+d+c+d+d+d,a))+z+  // make binary values and then to char
                (char)parseInt(d+c+c+d+d+c+d+c,a)+
                (char)parseInt(d+c+c+d+c+c+d+d,a)+
                (char)parseInt(d+c+c+d+c+c+d+d,a)+
                (char)parseInt(d+c+c+d+c+c+c+c,a)+
                (char)parseInt(d+d+c+d+d+d+d+d,a)+
                (char)parseInt(d+c+d+c+d+c+c+c,a)+
                (char)parseInt(d+c+c+d+c+c+c+c,a)+
                (char)parseInt(d+c+c+c+d+d+c+d,a)+
                (char)parseInt(d+c+c+d+c+c+d+d,a)+
                (char)parseInt(d+c+c+d+d+c+d+d,a)+
                (char)parseInt(d+d+c+d+d+d+d+c,a)
                ;
        System.out.println(H);  //obvious
    }

3

Perl 6 , 199 bayt

my \O=+[0];my \t=O+O;my \T=t+O;my \f=(t+t,O);my \F=t+T;my \S=T+T;my \L=(S,F);
say [~] ((S,T),(|L,t,0),(my \l=(|L,T,t)),l,(my \o=(|l,O,0)),F,(S,|f,t,0),o,(|L,|f),l,(|L,t),(F,0),)
.map({chr [+] t X**@_})

(Genişliği azaltmak için yeni satırlar eklenir, ancak gereksizdir, bu nedenle sayılmaz)


Hello World! Her harfin 2 gücünün listelerinin bir listesi olarak kodlanmıştır.

Tam anlamıyla bir 0şey için kullanılan bir kelimenin tam anlamıyla olduğu bir yer var 0. 1Sayısal önek operatörü ( +[0]) ile hemen sayıya dönüştürülen tek elemanlı bir liste oluşturmak için kullanılır .

my \O=+[0];    # one          # (List.elems)
my \t=O+O;     # two
my \T=t+O;     # Three
my \f=(t+t,O); # (four, one)  # <W r>
my \F=t+T;     # five
my \S=T+T;     # six

my \L=(S,F);   # lowercase letter  # (6,5)

say [~] (
  (S,T),            # H
  (|L,t,0),         # e
  (my \l=(|L,T,t)), # l
  l,                # l  reuse <l>
  (my \o=(|l,O,0)), # o  reuse <l>, add 0,1
  F,                # ␠
  (S,|f,t,0),       # W
  o,                # o  reuse <o>
  (|L,|f),          # r
  l,                # l  reuse <l>
  (|L,t),           # d
  (F,0),            # !
).map({chr [+] t X**@_})

3

JavaScript 662 karakter

O=[[,],[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,],[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,],[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,],[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,],[],[,,,,,,,,,,,,,,,,],[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,],[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,],[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,],[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,]];for(O_O=[].length;O.length>O_O;O_O++)document.write(String.fromCharCode((O[O_O].length||-Math.pow([,,].length,[,,,,,].length)-[,,,,,,,].length)+Math.pow([,,].length,[,,,,,,].length)+Math.pow(++[,].length,[,,,].length)-[,].length));document.write(String.fromCharCode(Math.pow([,,].length,[,,,,,].length)+[,].length))

Dizi değişmezlerini sadece tekdüze bir temele dayanarak kötüye kullanmaktan ne haber? Bu program kullanmamak avantajına sahiptir 0.


Bu geçerli olsa da, bu özel bulmaca bir kod golfüdür, bu da mümkün olan en kısa kodu hedeflemeniz gerektiği anlamına gelir. 600+ karakterde, mevcut JS çözümlerinin zaten sahip olduğu <100 karakterin yakınında değilsiniz.
zzzzBov

1
@zzzzBov: Aslında kazanmaya çalışmıyorum.
Konrad Borowski

1
Bu program kullanmamak avantajına sahiptir 0. Ne hakkında O_O=0;?
Outgolfer Erik

@EriktheGolfer: Sabit, teşekkürler. Bunu farketmedim.
Konrad Borowski

O_O=[].lengthO_O=false4 azaldığı gibi yazılabilir .
Atmocreations
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.