Puanınızı alın!


54

Meydan okuma:

Konsept yeterince basit: kendi kod golf puanını almak için tam bir program yaz!

Çıktı, yalnızca programınızın bayt sayımı ve sondaki olmalıdır bytes.

AMA BEKLE ..... bir kısıtlama var:

  • Kaynak kodunuz bayt sayınızdaki rakamlardan hiçbirini içeremez
  • Puanınız Yani eğer 186 bytes, programınız karakterleri içeremez 1, 6ya8

Örnek çıktı:

315 bytes
27 Bytes
49 BYTES

Ek Kurallar:

  • Kaynak kodda gereksiz karakterler, boşluklar ve yeni satırlar yasaktır, ancak sondaki boşluklar ve satırsonları çıktıda mükemmel şekilde kabul edilebilir
  • Sayı ile bytesçıktı arasında bir boşluk bırakılmalıdır.
  • Harfler büyük / küçük harf duyarsız
  • Kendi kendini denetleme veya kaynak kodu okuma
  • standart boşluklara izin verilmez

  • bu , yani

Bayt cinsinden en kısa kod kazanır!


6
Bunun için quine etiketine mi ihtiyacınız var yoksa kod kendi kendini denetleyebilir mi?
Adám

3
@Dat, kelimenin biçimlenmesi göz önüne alındığında, bytesniyetin, sayının, metni yazdırmak için gereken baytları içermesi gerektiğidir:bytes
Jeff Schaller

2
Çıktıdaki baştaki boşluklar kabul edilebilir mi?
rafa11111

3
Kodum should I çıkışı, 1 bayt uzunsa 1 bytesveya 1 byte? (Unutmayın ki zaten 41 cevap var, etkilendiğini sanmıyorum)
Outgolfer Erik

1
@JoKing Kurallarda saklamayı ele almadım, ancak bir şekilde büyük harfleri kullanmak puanınızı düşürürse, o zaman elbette ne elde ettiğinizi görmek isterim. Bunun için git diyorum!
X1M4L

Yanıtlar:


41

JavaScript, 19 bayt

Octal iki amaca hizmet etmek için icat edildi:

  • Linux'ta dosya izinlerini ayarlama
  • bu zorluğa cevap vermek

alert(023+' bytes')

Çevrimiçi deneyin!


Bu tam bir program olarak sayılıyor mu?
ericw31415

1
@ ericw31415 Bu bir tarayıcı programı , bu meta cevap tanımlanan .
Arnauld,

5
+1 çünkü nihayet bana neden octal'ın tamamen işe yaramaz olmadığını açıklıyor!
sergiol,

34

Perl 5 , 16 bayt

Almak için başka yollar var 16ama bu benim

say afpbytes^PPP

Çevrimiçi deneyin!


1
Bu nasıl çalışıyor?
Caird coinheringaahing

9
@cairdcoinheringaahing Eğer kelimenin tam anlamıyla benziyorsa ve bir anahtar kelime ile çelişmiyorsa (ve çok fazla kullanımdan kaldırılmış, ancak golf umrumda değil), Perl'de, Binary operatörleri & | ^ve ~ayrıca uygulanabilir. dizeleri ve ASCII değerleri listesinde olduğu gibi üzerlerinde çalışır (eğer her iki tarafın da dizeleri varsa). İçin |ve ^kısa dize ile uzatılmış gibi çalışır \0. Ondan sonra istenen çıktıya uyan harf kombinasyonlarını bulmak için basit bir alıştırma,
Ton Hospel

25

7 , 23 karakter, 9 bayt

54340045141332401057403

Çevrimiçi deneyin!

Bu tamamen rakamlardan oluşan bir dilde oldukça zor bir iştir, ama ben başardım…

Bu 7 kodlamada sadece 9 bayttır. (Açıkçası, 8, bayttır (23 × ⅜ - ¼ çünkü son iki sondaki 1 bit atlanabilir), ancak ilk kez, PPCG'nin tüm baytları toplama gereksinimi aslında bir avantajdır çünkü Ekstra son 1 bit gerekli ve bu nedenle soru tarafından yasaklanmadı.) Geri dönüşümlü bir altıgen döküm:

00000000: b1c0 2530 b6a0 22f8 1f                   ..%0.."..

Bu programı 7'de yazmanın ana zorluğu, 10 baytın altına golf oynamaktı (kullanmadan 7 yazmak 0veya 1oldukça zor.) Bu standart "Merhaba dünya" programı ile aynı yapıyı kullanıyor:

5434004514133240105 7 403
5434004514133240105 komutları 0-5 veri alanlarına değişmezleri ekle
                   7      yeni bir veri alanı bölümü başlat
                    403 veri alanına başka bir hazır bilgi eklendi
                         {implicit: son bölümü komut olarak değerlendirin}
                    4     takas, 1. ve 2. bölümleri 6 arasında boş bir bölüm ile
                         1. bölüm 3   çıktısını oluşturacak komutları yeniden yapılandırır
                       (+ umurumuzda olmayan diğer efektler)

Başka bir deyişle, veri alanının iki bölümünü oluşturarak başlarız; Her biri bir dizi emir iterek iki hazır bilgimiz var. İkinci bölüm (yığın tarzı itilirler, bu nedenle ilk basma = son pop) komutların oldukça rasgele bir dizisidir ancak komut dizisi kullanılarak itilir 5434004514133240105(bu nedenle veri dizisini oluşturur 5434664574733246765; metin içinde 7'yi tartışırken normalde normal yazı tipini kullanırım) değişmezleri iten bir komut için ve buna karşılık gelen değişmez için kalın. İlk bölüm komut dizisi kullanılarak 403üretiliyor 463. Daha sonra ilk bölüm programa geri kopyalanır (örtük bir davranış 7).

463Şimdi (kalın olmayan) sadece değişmezleri itmek komutları yerine, hemen bir şeyler yapmak (kalın) komutları oluşur. 4"string literal" kelimesini ilk bölüme getirmek için bölümleri yeniden düzenler. Ardından 0, 7'nin en çok bilinen işlemi yapar: veri alanının bir bölümünü almak ve onu yaratması en muhtemel komut sırasını yeniden oluşturmak. Orijinal komut dizisi tüm idi durumda 0- 5(o komutlar tamamen verileri itmek ve böylece yaptıklarını bariz kanıt bırakın, şaşırtıcı olmayan) ve bu yüzden orijinal diziyi olsun, bu% 100 doğru olduğunu 5434004514133240105geri. Sonunda, 3yazdırır.

Bu yüzden burada bakılacak kalan şey dizginin kodlamasıdır. Bunun kendi etki alanına özgü dili var:

5434004514133240105
5                    change encoding: 6 bits per character
 43                  select character set: digits and common symbols
   40                '9'
     04              space
       51            select character set: uppercase letters
         4133240105  'B' 'Y' 'T' 'E' 'S'

("Rakamlar ve genel semboller" karakter setinde "karakter karakteri seç: küçük harf" yoktur - önce farklı bir karakter kümesinden geçmelisiniz - bu nedenle etkili olanın altına sığacak kadar kısa bir golf yapmak için büyük harf kullanmam gerekiyordu. -bayt sınırı.)





8

PHP 7.2'den büyük , 13 bayt

Varsayılan ayarları (E_NOTICE uyarıları devre dışı) ve PHP sürümünün 7.2'den eski olduğunu varsayar.

Çözülmesi gerekenler xxd -r

00000000: 3c3f 3d7e cecc df9d 868b 9a8c 3b         <?=~........;

Veya Base64'ü tercih ediyorsanız

PD89fs7M352Gi5qMOw==

Çevrimiçi deneyin!


6

R , 16 bayt

cat(4*4,"bytes")

Çevrimiçi deneyin!


Kayıp yerin yüzünden 17 değil mi?
PmanAce

@PmanAce "Çıktı, yalnızca programınızın bayt sayısı ve bir sonuç olmalıdır bytes". Program 16 bayttır.
Giuseppe

catvarsayılan olarak girişleri arasına bir boşluk ekler.
Giuseppe

object.sizedoğru formatta çıktılar ( bytesvarsayılan olarak dahil edilmiştir). Annoyingly, bulabildiğim en kısa 17'dir: object.size(0)-39. TIO
Robin Ryder

1
Görünüşe göre, Hadley'in versiyonunda, 1 uzunlukta vektör uzunluğunun 48 olduğu, bu nedenle bu 16 bayt kod çalıştığı Ar bir sürümünü bulunmalıdır: object.size(0)/3.
Robin Ryder

5

Stax , 5 bayt

╗↑╞ô╝

Koş ve hata ayıkla

Ambalajsız, bu gibi görünüyor. Paketlenmiş kaynak modu, bu tür önemsiz ve ilgi çekici hale getirir.

5p     print 5 with no line break
`5l@   print the compressed string " bytes"

Paketlenmiş kaynak modunu kullanmak istemiyorsanız, 6^p`5l@7 bayt için çalışır.


1
Bu cevabı reddettim, çünkü paketlenmiş modu kullanmanın, baytları kurtarmanın akıllıca bir yolunu kullanırken, hile yapmak (en kötüsü değil) ve en iyi şekilde yaratıcı olmadığını hissediyorum. Tüm Stax sınırlı kaynak cevaplarının zayıf oyuna girmek yerine, bu aşağı oyu benzer cevapların tümünü kapsayacak şekilde bırakacağım.
caird coinheringaahing

1
Yaratıcı olmadığı konusunda kesinlikle hemfikirim. Ama bence bu hata restricted-sourcedil değil, kavramına bağlı . Bu aslında "5 bytes"Stax kullanarak üretim yapmanın en doğrudan yoludur .
özyinelemeli

Ben meydan (I downvoted ettik dolayısıyla neden olan bir sorun olduğunu katılıyorum o ), ama yine de bu cevabı sevmediğim. Lütfen onu silmeyin (sadece dikkatli), yanlış bir şey yok .
caird coinheringaahing




5

Retina , 15 bayt


 bytes
*>w`..+

Bu program "bytes" dizgisinde en az iki karakter içeren alt dizgilerin sayısını sayar ve ardından bu sayıyı ve dizgenin kendisini yazdırır.

Çevrimiçi deneyin!


5

PHP + HTML, 16 bayt

&#49;&#54; bytes

Evet, bu kaçamak kötüye kullanımına oldukça yaklaşıyor, ancak bunun kaydedilmesi gerektiğini hissettim. Ve PHP kullanımı teknik olarak bu cevap anlamına gelir olarak Turing-komple bir programlama dilinde yazılması . Tabii ki, benzer herhangi bir HTML şablonlama dili de aynı şekilde işe yarayacaktır.

Canlı demo (PHP olmadan):

&#49;&#54; bytes


Beni yen! Ve ; genellikle ihmal edilebilir!
Çarşamba 21

Ahh ama o zaman 14/15 bayt olurdu
Çar




4

Octave , 23 bayt

printf('%i bytes',9+14)

Çevrimiçi deneyin!

Ve bu:

disp(['','67$f}xiw'-4])

Çevrimiçi deneyin!


İlk cevaplar iyi görünüyor, ama ... ikincisi nasıl çalışıyor? oO
rafa11111

2
@ rafa11111 4(ASCII kodlarının) çıkarılması '67$f}xiw'ASCII kodlarını verir '23 bytes'. Sonra, boş dizgeyle birleştirmek '' ASCII kodlarını karaktere dönüştürür
Luis Mendo

2
@Luis Mendo Oldukça zekice! Aydınlattığın için teşekkürler!
rafa11111

4

Petit Computer BASIC, 11 bayt

?9+2,"bytes

Bir print ifadesinde virgül kullanılması, imleci geçerli sekme boyutunun bir sonraki katına götürür. SmileBASIC'te, bu varsayılan olarak 4'tür, bu çıktı olur 11 bytes(2 boşluk), ancak PTC BASIC bunun yerine 3 kullandı, böylece çıktı doğru aralığa sahip oldu.


4

APL (Dyalog Unicode) , 12 bayt

Örtülü olarak STDOUT'a yazdıran tam program.

'bytes',⍨3×4

Çevrimiçi deneyin!

,⍨ dize çarpımın sonucuna eklenir. APL'nin varsayılan karma tip veri gösterimi sayı ve sonraki metin arasında boşluk bırakıyor.


Yanılıyor olabilirim, ama bayt sayısı ve programında 2 yok mu? 3 * 4 olsa iyi olmalı
fyrepenguin

@fyrepenguin Heh, haklısın elbette. Ne kadar aptalım.
Adám

4

Beyin Flak , 100 BYTES

((((((<>))))))(((()[[]]((((()()((((([][]){}){}())[()]))[[][]])()){})()[][]))[()()[]])[]){({}<>)<>}<>

Çevrimiçi deneyin!

Parçayı bytestüm kapaklarda çıkarır. Brain-Flak'a aşina olan biri ((<>))başlangıçta tümüyle kafa karışıklığı yaratabilir ancak başlangıçta nilad ( []) yığın yüksekliğini kötüye kullanmak için orada 0olduklarından ve ürettikleri hiçbirinin basılmadığından emin olabilirsiniz.



4

Beyaz boşluk , 112 bayt

Sırf henüz kimse yapmadı çünkü:

   			    
	
 	   
   	 	  		
   	   	 	
   	 	 	  
   	 		  	
   	    	 
   	     

  
	
   
 
	  

 


   




Çevrimiçi deneyin!

Büyük harflerde daha kısa ikili ASCII kodları bulunduğundan, büyük harflerle "BYTES" yazar. Programdaki komutlar, kendimce görünür notaları oluştururken:

Push 112
PrintNum
Push 0
Push 0x53
Push 0x45
Push 0x54
Push 0x59
Push 0x42
Push 0x20
Label _
PrintChr
Dup
JumpZ S
Jump _
Label S
End

Ah, zaten bir Boşluk cevabı olduğunu fark etmedi .. İşte daha kısa bir cevap ( 104 bayt ). . Yine mayını silecek. İşte vurgulama ve açıklama ile aynı.
Kevin Cruijssen

Oh, hmm Metnin yeterince kısa olduğunu düşünüyorum, bu döngü uygulamak aslında sadece PrintChar'ı tekrarlamaktan daha fazla acı veriyor. (Ve biliyorum ki, son
NNN'yi

4

Java 5 veya 6, 44 bayt (tam program)

enum A{A;{System.out.print(0x2C+" bytes");}}

TIO bağlantısı yok, çünkü Java 5/6 eski. Java 5/ main6'da zorunlu -metod yerine kodlu bir numaralandırma yapmak mümkün oldu , bu da tüm program zorluklarını kısalttı.

Ayrıca java.lang.NoSuchMethodError: main\nException in thread "main"STDOUT'a yazdırdıktan sonra STDERR'de, metaya göre iyi olan hatalar (ancak meydan okuma STDERR'ye ek hata vermediyse System.exit(0);), hatayı önlemek için eklenebilir (ve sekizli sayıların güncellenmesi gerekir).

@ OlivierGrégoire tarafından önerildi (ve ilgili Java ipucu ).

Java 8+, 74 bayt (tam program)

interface M{static void main(String[]a){System.out.print(0112+" bytes");}}

Çevrimiçi deneyin.

Java 8+, 16 15 bayt (lambda işlevi)

v->0xF+" bytes"

@ OliverGégoire sayesinde -1 bayt .

Çevrimiçi deneyin.


2
Teknik olarak tam bir program değil :)
OOBalance

@OOBalance Hata! Bir şekilde bunu okudum, düzeltdiğiniz için teşekkürler. Benim
puanım

1
37*2a içeriyor 7, geçerli değil. Alternatif çözümün yine de iyi.
OOBalance

1
v->0xE+"bytes"veya v->0xF+" bytes". Test edemiyorum ama yine de çalışmalı. Hiçbir şey skor ve "bayt" ın ayrılması gerektiğini söylemez.
Olivier Grégoire

1
@ OlivierGrégoire biliyorum, biliyorum. ;) Tüm programı gönderdiğimde, ipucunu-cevabını düşünerek enum olarak cevaplamaktan şüpheliydim . Hala destekleyen herhangi bir çevrimiçi derleyici biliyor musunuz? Cevaplarım için test koduna sahip bir bağlantıya sahip olmayı tercih ederim ..
Kevin Cruijssen


4

Uygulama, 15 bayt

Evet, oraya gidiyorum.

9+6&”bytes”

1
Ama ...Your source code can not include any of the digits from your byte count
nicael

@nicael Dang, haklısın. Bir saniye sonra ...
DonielF

Yanılıyorsam düzelt, ancak çok baytlı bir karakter değilse (doğru hatırlıyorsam Unicode'da 3 bayt), bu yüzden bu 11 bayttan fazla mı?
caird coinheringaahing

@cairdcoinheringaahing ... Vur. Haklısın - “2 bayt, bunu 15'e
yükseltti

Bu hala 11 yazdırmıyor mu?
Yıkılabilir Limon


3

Toplu iş, 32 bayt

@@echo %COMSPEC:~-10,-010% bytes

COMSPECbu genellikle %WINDIR%\system32\cmd.exealt dizeyi 10'dan 8 karaktere kadar çıkartırım. Eski 16 bayt kendinden referanslı versiyon:

@echo %~z0 bytes

Neyse ki bayt sayısı 10'un katı değildi.


@ manatwork Tamam, görmedim, işte yeni bir sürüm.
Neil

3

JavaScript, 16 15 bayt

x=>0xf+' bytes'

_=>5*3+' bytes'
Neil

@Neil Hem kod hem de byte-count 5bu durumda .. içerir
Kevin Cruijssen

@KevinCruijssen Bah, bunu göz ardı ettiğime inanamıyorum.
Neil

Başvuruların tam program olması zorunludur " kendi golf golf puanını çıkarmak için tam bir program yaz !"
Kritixi Lithos,

3

7Zip - 90 14 bayt

Hex dökümü:

00 75 0d 08 c0 00 0d 08 03 00 00 03 04 1d  

Kullanmak:

kaynak dosyaya kaydedin, her şeyi adlandırın.

derleyiciyi komut satırından çalıştırın: 7z e [source name]

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.