Selam Dünya!!! Fibonacci dağılımı


21
  1. Programınız tam olarak çıktı vermelidir: Hello world!!!sonradan satır besleme olmadan
  2. Programınız herhangi bir giriş yapmamalıdır.
  3. Sourcecode karakter dağılımı aşağıdakilere göre doğru olmalıdır:
    • Sayısal karakterlerin sayısı (0-9), tam olarak bir fibonacci dizi numarası olmalıdır.
    • Kaynak koddaki diğer sayısal olmayan karakterlerin (0-9) sayısı, yukarıdaki fibonacci dizi numarasından önce tam olarak fibonacci dizi numarası olmalıdır.

Kaynak kodda dört geçerli karakter dağılımı örneği:

  • 13 sayısal, 8 sayısal olmayan karakter.
  • 34 sayısal, 21 sayısal olmayan karakter.
  • 55 sayısal, 34 sayısal olmayan karakterler.
  • 89 sayısal, 55 sayısal olmayan karakterler.

Bu kod-golf, bayt cinsinden en kısa kod kazanır! İyi şanslar!

Düzenleme: Bu soru kod kodu olma ile birlikte kaynak kodu boyutunda kısıtlamalar bulunduğundan, kabul edilen cevap (birden fazla kazanan karakter uzunluğunu paylaşıyorsa) en fazla oy alan cevap olacaktır (ve en az karakter sayısı): 2014- 03-01.


6
Bu nedenle, tüm çözümler bir fibonacci sayısı olan bir karakter sayısına sahiptir.
Howard

1
İşte cevapları doğrulamak için bir program (kodu giriş kutusuna yapıştırın.)
Justin

1
Bunu 55 karakterden daha kısa sürede yapmak bile mümkün mü? İstenilen çıktıda 14 karakter var ve karakter başına en az bir karakter kullanmadan rakam üretmek için sayıları kullanabilen bir dil düşünemiyorum.
Justin

2
@Plarsen kesinlikle tamam değil
John Dvorak

1
Tamam, o zaman kuralları değiştirmeyeceğim :)
Plarsen

Yanıtlar:


27

Windows Komut İstemi - 34, 8 , 5 karakter, (aşağıdaki 2)

* Bunlar, kural 2'yi ihlal ediyor olabilir veya etmiyor olabilir, ancak yine de burada

%~099

Dosyayı adlandırın:

&start call echo Hello world!!!&exit -b .cmd


Şimdi dosya sistemini biraz - 2 karakter bozar (veya isterseniz daha az).

A1

Dosyayı adlandırın (tercih ettiğiniz sıradışı yöntemi kullanarak):

"&start call echo Hello world!!!&exit&.cmd

Bu nasıl çalışıyor:

Cmd komut dosyaları 'cmd.exe / C "% 1"% *' ile çağrıldığından, yürütülen komut şöyle olacaktır:

cmd.exe /C "c:\PATH_TO_THE_SCRIPT\"&start call echo Hello world!!!&exit&.cmd"

Aşağıdaki sırada olacaktır:

  • "C: \ PATH_TO_THE_SCRIPT \" çalıştırılamadı
  • Yeni bir kabuk baskı açın Merhaba dünya! \ N
  • Orijinal kabuğundan çık

2
Vaov! Kurallar girdi olmadığını söylemediyse galibi kazandığımızı düşünüyorum. Kutu dışında düşünme için yine de + 1.
Plarsen

2
Windows CMD ... +1 kodlu golf kodu. Ayrıca, "girdi yok" un "STDIN okumak yok" anlamına gelebileceği tartışılabilir: P
Camilo Martin

1
Bu diğer kod golfleri için de ilginç bir numara… gerçek kodu dosya adına yazın ve eval $0çalıştırmak için bir şeyler kullanın <rolleyes>
Tobia

1
Bu imkansız!! 5 karakter? Gerçekten ilginç bir yaklaşım
Plarsen

1
Aslında, az önce 2 karakterlik bir çözüm yolladım.
Tobia

20

MySQL, 34

x'48656C6C6F20776F726C642121'||'!'

Bu, ayarın içerdiğini Hello world!!!varsayarak değerlendiren bir MySQL ifadesidir . Tam olarak 21 hane ve 13 hane içermiyor.sql_modePIPES_AS_CONCAT

Bunun geçerli bir giriş olarak nitelendirilip onaylanmadığı, jüriye bırakıyorum.

Örnek

mysql> select x'48656C6C6F20776F726C642121'||'!';
+------------------------------------+
| x'48656C6C6F20776F726C642121'||'!' |
+------------------------------------+
| Hello world!!!                     |
+------------------------------------+
1 row in set (0.00 sec)

5
Ne ... CMD ve SQL kazanan kod golf ??
Camilo Martin

selectVe ;tartışmasız ifadesinin bir parçası, ama yine de akıllı bir çözümdür.
primo

@primo onlar, bu yüzden uygun olup olmadığından emin değilim. Ama ben onu komiklik için gönderirim diye düşünmüştüm ;-)
Tobia,


11

GolfScript, 55 karakter

[72 101 108 108 111 32 119 111 114 108 100 33 {.}2*]''+

34 karakterlik bir çözüm bulmanın bir yolunu bulamadım, bu yüzden bunu ben yarattım.


10

Befunge 98 - 55

a"!!!dlrow olleH"ek,@1235813213455891442333776109871597

Hiçbir şey yapmaz, çünkü yeni bir çizgiyle yapmaya karar verdi. Sayılar, Fibonacci dizisinin birleştirilmiş değerleridir.


8

Python 34-55

print "Hello world%s"%("!"*int(3.141592653589793238462643383279502884197169399375105820))

Evet. Onlara rakam atıyorum. Bu konuda ne yapacaksın?


Pi ~ 3'ün bu kadar faydalı olacağını kim bilebilirdi!
Kyle Kanos

1
Soru 21 sayısal olmayan artı 34 sayısal diyor, cevabınız 34 sayısal olmayan artı 21 sayısal.
user12205,

1
"merhaba dünya", "merhaba dünya" olmalı; bu h büyük harf olur.
Justin

7

C (89 karakter)

main() {
int i[0000000000000004]={1819043144,1870078063,560229490,2566922529};
puts(i);
}

Yukarıdakiler geçerli olmakla birlikte, ne yazık ki, aşağıdaki programla sıkıştırmaya yönelik çabalarım bu spesifikasyonu karşılamıyor. Bakmaya değer olduğunu düşünüyorum ve belki bir başkası olsa onu biraz kısaltabilir (64 karakter, 37 rakam, 27 rakamsız). Derlemek için clang ve ile kullanmanız gerekir -fms-extensions.

main(){puts((__int128[]){671944380693508453879479574226248i8});}

Bileşik değişmezler , aradığınız şeyin adıdır. Şimdi bunları 21 karaktere indirgemek için kullanmaya çalışıyorum!
charmlessCoin

Ulaşabileceğim en düşük sayısal olmayan sayı, iküresel (atlayarak int) yaparak 26'dır . Kullanmak longvirgül kurtarabilir, ancak maliyeti daha fazladır. 21 çok uzak.
Ocak'ta ugoren

Evet, çok fazla boşa harcanan yer. Bu küçük numarayı kullanabiliyorum, main(){puts((int[]){1819043144,1870078063,560229490,8481});}ama yine de 60 karakter. Birkaç tane daha kaldırabilirsem ... Düzenleme: vay, yani küreler bir beyanda bulunmak zorunda değil mi? Kim biliyordu?
vmrob

@vmrob, globaller bir beyanda bulunmalı. Ama bir tip varsayılan int, bu yüzden a;eşdeğerdir int a;.
Ocak'ta Ugoren

@ugoren Bir bildiriye sahip olmaları gerektiğini biliyordum, int için varsayılan olduğunu bilmiyordum!
vmrob

6

Windows PowerShell (muhtemelen ayrıca Bash), 55

curl -L bit.ly/1b9q8ve?1=123581321345589144233377610987

Ağ erişimi hakkında hiçbir şey söylemediniz, işte kirli bir çözüm. İkinci denemede yeterince az harf içeren bir bit.ly URL adresi var. Ne yazık ki, hala kullanılmayan ya da boşa harcanan 34 basamağa ihtiyaç duyan 21 basamaksız.


Bit.ly bağlantılarını düzenleyebileceğinizi biliyor musunuz?
Timtech

Ne demek istiyorsun, düzenle? Ayrıca, bu hiçbir durumda 13 harfin altında olmazdı.
John Dvorak

"Kopyala" nın yanındaki kaleme tıklayabilir ve bağlantıyı düzenleyebilirsiniz. Bunu yaparsanız, eski sürümlerin tümü çalışmaya devam eder.
Timtech

1
34'e kısaltıldı! curl 37.187.42.18/?hw=112358132134
Dom Hastings

6

sh, 55

echo Hello world!!! #1234567890123456789012345678901234

6

Korn Kabuğu, 21

echo $0
#123456789012

Komut "Merhaba dünya !!!" olarak adlandırılmalıdır. :)


5

Bash, 2 karakter

Çok iyi, olası bir durumda Robert'in cevabı diskalifiye edilmedi, işte benimki:

$0

Dosyayı adlandırın echo Hello world!!!ve ile yürütün sh.


5

piton

print'092020090920200948656c6c6f20776f726c642121212009200909200920'.decode('hex').strip()

basamaklar: 55 basamaksız: 34


Çözümde yorum bulunmadığını unutmayın. sadece kod.
Elisha

4

PHP (55 bayt)

Bu program ikili kullanır (vay, aynı numarayı tekrar kullandığımda üçüncü kez). 21 sayısal olmayan karakter, 34 sayısal karakter. Mektup yok, çünkü harfler sıkıcı.

xxd

0000000: 3c3f 3d7e b79a 9393 90df 8890 8d93 9bde  <?=~............
0000010: dede f53b 2331 3233 3435 3637 3839 3031  ...;#12345678901
0000020: 3233 3435 3637 3839 3031 3233 3435 3637  2345678901234567
0000030: 3839 3031 3233 34                        8901234

@JanDvorak: Neredeyse "önce veya sonra" okudum eminim. Oh o zaman düzelteyim o zaman.
Konrad Borowski

4

Mathematica 55

"Hello World!!!"(34+21!)/000000000051090942171709440034

Çıktı

Hello World!!!

4

Sclipting (34 karakter)

丟0000000000긒괡뉆롲닷댠닶롬뉔밈0000000000併0反

Ne yazık ki Sclipting hiçbir ASCII karakterini kullanmaz, bu yüzden programı 21 gereksiz sayı karakteriyle doldurmak zorundayım :(


2

İleri veya Yakut, 55

(34 sayısal + 21 sayısal olmayan)

ileri

." Hello world!!!" \ 3141592653589793238462643383279502

Yakut

puts"Hello world!!!"#3141592653589793238462643383279502

Pad'i yorumlamak için kullanmak kirli hissettiriyor ancak bunlar geçerli cevaplar.


2

J (55 karakter)

(34 sayısal + 21 sayısal olmayan)

(72 101 108 108 111 32 119 111 114 108 100{a.), 3#33{a.

0

C #, 233 Bayt

233 Karakter
144 Sayısal
89 Sayısal Olmayan Karakterler

/*I suck at CodeGolf!!!*/new List<int>{0072,00101,000108,000108,000111,0000032,00000119,00000111,0000000000114,0000000000108,00000000000000100,00000000000000033,00000000000000033,00000000000000033}.ForEach(c=>Console.Write((char)c));

Çıktılar:

Hello world!!!

0

Japt , 55 bayt

"aaaaaaa1234567890123456789012345678901234"`HÁM WŽld!!!

Çevrimiçi deneyin!

Temelde, başlangıçta göz ardı edilen, ancak kodu koşullara uygun kılan bazı çöplerin olduğu basit bir merhaba dünyasıdır.


-1

Windows Toplu İşi

echo Hello World!!!::0123456789012345678901234567890123

12
Vay. Bu benim çözümümden çok farklı.
user12205,

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.