Kod ile aynı uzunlukta çıktı


97

Bu zorlamada, girdi almayan ve programın kendisiyle aynı sayıda byte basan veya döndüren bir program veya işlev yazmalısınız. Birkaç kural var:

  • Yalnızca yazdırılabilir ASCII aralığında (0x20 - 0x7E, dahil) veya yeni satırlarda (0x0A veya 0x0D) baytlar yazdırabilirsiniz.
  • Kodunuz bir satır olmamalıdır, bu nedenle kod ve çıktının en az bir baytta farklı olması gerekir.
  • Kodunuz en az bir bayt uzunluğunda olmalıdır.
  • Çıktınız izleyen yeni satırlar içeriyorsa, bunlar bayt sayısının bir parçasıdır.
  • Kodunuz standart olmayan komut satırı bayrakları gerektiriyorsa, bunları her zamanki gibi sayın (örneğin, dilinizin uygulamasının bayt sayımına standart bir çağrı eklenmesiyle) ve çıktının uzunluğu çözümünüzün puanına uymalıdır. Örneğin, programınız abstandart olmayan bayrağı gerektiriyorsa -n(standart bayraklarla birleştirilemediğini varsayalım, yani 3 bayt), toplamda 5 bayt çıkarmanız gerekir.
  • Her olası çıkışın yukarıdaki gereklilikleri karşıladığını gösterebildiğiniz sürece, çıktı her zaman aynı olmak zorunda değildir.
  • Her zamanki quine kuralları geçerli değildir . Kaynak kodunu veya boyutunu okuyabilirsiniz, ancak bunun çoğu dilde kodlamanın daha kısa olacağından şüpheliyim.

Bir program veya işlev yazabilir ve çıktı sağlama standart yöntemlerinden herhangi birini kullanabilirsiniz . Sonucu yazdırırsanız, standart çıktıya veya standart hata akışına yazdırmayı seçebileceğinizi, ancak bunlardan sadece birinin sayılacağını unutmayın.

Herhangi bir programlama dilini kullanabilirsiniz , ancak bu boşlukların varsayılan olarak yasak olduğunu unutmayın .

Bu , yani en kısa geçerli cevap - bayt cinsinden - kazanır.

Liderler Sıralaması



18
... ama "Kodunuz bir quine olmamalıdır" ama ... etiketli oluyor Quine
Okx

4
@Okx Çünkü bu genel bir kinedir, yani istenen çıktı kaynak koduna bağlıdır.
Martin Ender

4
@MartinEnder Muhtemelen bir varsayılan olan çıkış koduna göre çıkışa izin vermemelisiniz. İzin verirseniz, neredeyse her dilde hemen hemen her bir bayt programına izin verilir. Bir kullanıcı zaten bunu yaptı
Sriotchilism O'Zaic

2
@WheatWizard çıkış koduyla çıktı bir dize değildir, bu nedenle burada geçerli değildir.
Martin Ender

Yanıtlar:


204

C (modern Linux), 19 bayt

main(){puts('s');}

Derlenip çalıştırıldığında, aşağıdakiler yazdırılır:

Segmentation fault

20
Bu mükemmel: D
Beta Çürümesi

4
bu daha çok "C + İngilizce dil unix / posix OS;)"
Florian Castellane

5
"C, modern Linux" yazmanın "C" den daha iyi olacağını düşünüyorum: Windows altında hata mesajı farklı ve eski zamanlarda Linux programları bile 0x73 ('s') adresinin okunabileceği şekilde derlendi bu yüzden istisna olmadı.
Martin Rosenau

9
Bu cevabı onaylamak için siteye katıldım.
Nitish

7
Bu kadar etkileyici, çıktıyı basan gerçekten C programı değil, içinde çalıştığı kabuk.
Dennis

80

Excel, 11 bayt

Norveç dili versiyonu:

=SMÅ(13^9)

İngilizce sürümü (12 bayt):

=LOWER(17^9)

N basamaklı sayı üretir ve küçük harfe dönüştürerek metne dönüştürür.


106
Bu, "iş için doğru dili seçmek" için yepyeni bir anlam vermektedir.
Martin Ender

4
Bu harika bir fikir. Her =9^7&""iki dilde de 7 basamaklı sayı üreten ve sadece 7 bayt olan yapmak daha kısa olacaktır .
OpiesDad

@OpiesDad Güzel bir çözüm, bence bir cevap olarak göndermelisiniz, bu yüzden abartmalıyım.
pajonk

4
@MartinEnder Spekülasyonunuzun / potansiyel şakanızın bu cevaptan daha çok nasıl etkilendiğini beni şaşırtıyor (yakın olmasına rağmen).
HyperNeutrino

55

Labirent , 4 bayt

!!>@

Çevrimiçi deneyin!

Baskılar 0000

açıklama

!   Print an implicit 0 from the stack.
!   Print an implicit 0 from the stack.
>   Rotate the source code right by one cell, so the code now becomes

    @!!>

    The IP is moved along, so it's now at the end of the line, which is 
    a dead end. So the IP turns around and starts moving left.
!   Print an implicit 0 from the stack.
!   Print an implicit 0 from the stack.
@   Terminate the program.

6
Bu çok zekice. Evde bir +1 var!
caird coinheringaahing

54

Bash (yalnızca yerleşik), 8 bayt

{e,,}cho

Yazdırır cho chove yeni bir satır.


40

Retina , 2 bayt

no

Çevrimiçi deneyin!

Yazdırır 0ve satır beslemesi.

Çok sayıda 2-byte çözüm var, ancak bunun en uygun olduğuna inanıyorum. Retina varsayılan olarak her zaman sonunda yeni bir satır yazdırır ve ondan kurtulmak çok fazla bayt alır. Bu yüzden boş girişi değiştirmeden bırakan 1 baytlık bir program bulmalıyız. Bunu yapan tek programın, çıktıya eşit ve dolayısıyla zorluğun izin vermediği bir tek satır besleme içeren program olduğuna inanıyorum.

Bir sonraki en basit şey, Retina ile tek bir rakam (boş girişe karşı bazı regex eşleşmelerinin sayısı) çıktısını almak ve bunu bir çok başarısız (veya eşleştirme) 2 baytlık desenle yapabiliriz.


27
+1 Kod çalıştırmamamı söyleyen kod için: P
Christopher

33

Mathematica, 2 bayt

4!

faktöryel

24


1
Gah! çok zeki.
tuskiomi

2
beni yen! +1. ( Bunun Mathematica'nın REPL versiyonunda olduğunu söylemelisin .)
Greg Martin

Bu makul bir cevap ise, "1" yanıtı da makul bir cevap olmaz mı? ('1' i Mathematica’nın REPL’ine koymak da '1’i de verirdi ...)
Mark Segal

3
@MarkSegal Bu quine kuralını ihlal eder.
AlexR

6
Kurallar: ... "... kod ve çıktının en az bir baytta farklı olması gerekir"
J42161217

29

C, 20 bayt

f(){printf("%20d");}

20'ye kadar boşluk bırakan bir sayı çıkarır. (Hangi sayı? Bir sonraki hafızada ne olacaksa.)

Bazı örnekler sistemimde çalışıyor:

llama@llama:...code/c/ppcg121056samelen$ ./a.out 
           -666605944
llama@llama:...code/c/ppcg121056samelen$ ./a.out 
          -1391039592
llama@llama:...code/c/ppcg121056samelen$ ./a.out 
           1727404696
llama@llama:...code/c/ppcg121056samelen$ ./a.out 
             10717352
llama@llama:...code/c/ppcg121056samelen$ ./a.out 
           1485936232

Bu 19 baytlık çözümün izin vereceği için çıktının keyfi bayt olamaması çok yazık:

f(){write(1,f,19);}

adresinden başlayarak 19 baytlık önemsiz çıktılar f.


Değişken çıktı kuralını kullanan bir cevap gördüğüme sevindim. :)
Martin Ender

Bu segfault olamaz mı?
Daniel

TIO linkleri nerede?
Hesap MakinesiFeline

@Daniel Hayır, basılan numara yazmacın önceki içeriklerinden gelecektir %esi.
Doorknob

8
@Doorknob ama yine de tanımsız bir davranış, bu nedenle daha sadist bir derleyici burada tamamen farklı bir şeyler yapabilir
Sarge Borsch

29

Linux'ta Bash, 6

uname

(bunu bir newline takip eder)

Çıktıları Linuxbir satırsonu takip eder.


2
Teknik unameolarak bir bash yerleşik değil - ayrı bir çalıştırılabilir
Jason Musgrove


@GammaFunction Nerede unamebash yerleşik olarak görüyorsunuz ? Şu an ellerimi uzatabildiğim her dağıtım TIO dahil ayrı bir ikili . Buna karşılık, bağlı cevabınızın gösterdiği gibi, umaskçoğu / tüm kabuklarda bir yerleşiktir.
Dijital Travma

Ben yok bakın unamebir yerleşiğini olarak. "-1 ve aslında bir yerleşik" dediğimde, "Bu cevap umask-1 bayt için kullanılır ve aslında bir yerleşiktir" anlamına geliyordu umask.
GammaFunction

@GammaFunction Üzgünüz - Yorumunuzdaki "-1" kelimesinin anlamını yanlış anladım - Bu anlamı aşağılayanlara ve nedenini açıklayan bir yoruma alışkınım.
Dijital Travma

27

Javascript ES6, 9 bayt

Şablon Dizelerini Kullanma

_=>`${_}`

f=

_=>`${_}`

console.log(f());
console.log(typeof f());


Is undefinedbir dize olarak kabul?
Shaggy

3
@Shaggy Düzenlemeye bakınız. String enterpolasyon kullanıyorum
Weedoze

Vay bu benim PPCG ve 14 oyunda ikinci yazım! Thanks
Weedoze

1
Neden basit peynir altı suyu zor olabilir? (_=>_+'').
GOTO 0

1
@ GOTO0 Oh tamam parantezi saklıyorsunuz. Bu başka bir seçenek. Ben şahsen mayın
hehe'yi

24

Piramit Şeması , 74 43 42 bayt

Khuldraeseth na'Barya ile 31 bayt kaydedildi! JoKing'in yeniden tasarlanan çözümü sayesinde 1 bayt kurtarıldı!

  ^
 /^\
^---^
-^ ^-
 -^-
 /2\
/ 8 \
-----

Çevrimiçi deneyin! 41 basamaklı sayıyı 28^28 = 33145523113253374862572728253364605812736ve ardından takip eden bir yeni satırı yazar.


Eski versiyon

  ^
 / \
/out\
-----^
    /^\
   ^---^
  /1\ /9\
 /606\---
/51015\
-------

Çevrimiçi deneyin!

Çıktılar 71277303925397560663333806233294794013421332605135474842607729452115234375= 160651015 ** 9, veya yaklaşık 10 74 .


6
Hey, dilini satmaya mı çalışıyorsun? Eğer öyleyse, tutuklusun. - Polisler
NoOneIsHere

2
@Hayır! Afedersiniz?
Conor O'Brien,

3
Üzgünüz, buna bir tür dolandırıcılık adı da olan Pyramid Scheme denir.
NoOneIsHere,

1
ohhhhhhhhhhhh rofl
Conor O'Brien,

1
Örtük çıktılar sizi 43 bayta indirir .
Khuldraeseth na'Barya


23

Python 2,9 bayt

print 1e5

Görüntülenen çıktıda sondaki bir yeni satır var.

Çevrimiçi deneyin!


İzleyen yeni satırlar çıktı kadar karakter olarak sayılıyor mu? Aksi takdirde, bu sekiz bayt yazdırır.
OldBunny2800

@ OldBunny2800 Evet, zorluk şöyle diyor Çıktılarınız izleyen yeni satırlar içeriyorsa, bunlar bayt sayısının bir parçasıdır . Her neyse, cevabımı açıklığa kavuşturacağım
Luis Mendo

18

brainfuck , 25 bayt

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

Çevrimiçi deneyin! Not: 8 bit işaretsiz hücreli bir uygulama gerektirir

Çıktı:

~~~~~}}}}}|||||{{{{{zzzzz

açıklama

--[         254
 -->+<]      /2 = 127 into the second cell
+++++[      Five times
 ->-.....<]  Print the second cell - 1 five times

4
8 bit hücreli, sonsuz bir bant gibi birçok BF varyasyonu vardır. veya sınırlı bir bant ve sonsuz hücreler. Sizinkinin imzasız 8 bitlik bir hücre modeli olduğundan eminim, ancak cevabınıza eklerseniz iyi olacağını düşünüyorum.
Roman Gräf

@ RomanGräf İyi nokta! Standart olmayan bir uygulama gerekliyse genellikle bu bilgiyi içeririm. Bu cevap herhangi bir standart uygulama üzerinde çalışmalıdır (8 bit işaretsiz hücreler, herhangi bir bant), ancak açıklığa kavuşturmak için bir not ekleyeceğim.
Zack C.

.Yazdırılamayan NULLkarakteri basan 1 baytlık bir programınız olamaz mı?
Graviton

@ Graviton Bu, bu mücadelenin ilk kuralını ihlal eder. Ancak, bu bir BF türevinde varsayılan olarak yazdırılabilir bir değere karşılık gelen geçerli bir çözümdür (bkz: benim beyin boğazı cevabı ).
Zack C.


16

C (İdeone), 14 bayt

f(){warn(0);}

Çalıştırılabilir adını veren Ideone'daprog bu, takip eden bir yeni satırla aşağıdakileri verir.

prog: Success

C (GCC), 15 bayt

f(){warn(00);}

GCC, a.outvarsayılan olarak (baytlara mal olacak ek bayrakların yokluğunda) adlı bir yürütülebilir dosya yazdığından , bu izleyen bir yeni satır ile aşağıdakileri verir.

a.out: Success

7
@ MDXF Spec program veya işlev diyor, bu nedenle bir işlev gönderimi tamamen geçerlidir. Dosya adı burada kullanıcı tarafından seçilmediğinden (hem Ideone hem de gcc'nin varsayılanları vardır), bunun iyi olduğunu düşünüyorum (kişisel görüş).
Dennis,

15

C (gcc) , 18 17 bayt

f(){puts('@C');}

Ve arasında bir STX baytı ( 0x02 ) olduğuna dikkat edin .@C

Çevrimiçi deneyin!

taşınabilirlik

Bu, Fedora 25'te gcc 6.3.1 ve clang 3.9.1, Ubuntu 14.04.4'te gcc 4.8.4 ve aşağıdaki çıktıları yazdırdığı openSUSE 13.2'de gcc 4.8.3 ile test edilmiştir.

inux-x86-64.so.2

Bunun, aşağıdaki türden bir yürütülebilir dosyayı derlediği sürece, tüm gcc sürümleriyle aynı çıktıyı üretmesini bekliyorum.

ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2

Farklı platformlar, çok karakterli karakter sabitindeki baytlar için farklı bir bellek adresi ve muhtemelen farklı bir sipariş gerektirir.

Örneğin, FreeBSD 11 üzerinde clang 3.8.0 @\2Cile @\2\4baskıların exec/ld-elf.so.1ve yeni satırın değiştirilmesi .

Çevrimdışı doğrulama

$ printf "%b\n" "f(){puts('@\2C');}main(){f();}" > quine.c
$ gcc -w -o quine quine.c
$ ./quine
inux-x86-64.so.2
$ ./quine | wc -c
17

Nasıl çalışır

Varsayılan olarak, ld , metin bölümünün temel adresi olarak 0x400000 kullanır, bu da ELF'nin içeriğini 0x400000 bellek adresinde başlayan bulabiliriz. .

ELF'nin ilk 640 baytı gerçek kaynak kodundan büyük ölçüde bağımsızdır. Örneğin, f'nin bildirimini izler main(){f();}ve başka bir şey olmazsa, aşağıdaki gibi görünürler.

00000000: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00  .ELF............
00000010: 02 00 3e 00 01 00 00 00 00 04 40 00 00 00 00 00  ..>.......@.....
00000020: 40 00 00 00 00 00 00 00 e8 19 00 00 00 00 00 00  @...............
00000030: 00 00 00 00 40 00 38 00 09 00 40 00 1e 00 1b 00  ....@.8...@.....
00000040: 06 00 00 00 05 00 00 00 40 00 00 00 00 00 00 00  ........@.......
00000050: 40 00 40 00 00 00 00 00 40 00 40 00 00 00 00 00  @.@.....@.@.....
00000060: f8 01 00 00 00 00 00 00 f8 01 00 00 00 00 00 00  ................
00000070: 08 00 00 00 00 00 00 00 03 00 00 00 04 00 00 00  ................
00000080: 38 02 00 00 00 00 00 00 38 02 40 00 00 00 00 00  8.......8.@.....
00000090: 38 02 40 00 00 00 00 00 1c 00 00 00 00 00 00 00  8.@.............
000000a0: 1c 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00  ................
000000b0: 01 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00  ................
000000c0: 00 00 40 00 00 00 00 00 00 00 40 00 00 00 00 00  ..@.......@.....
000000d0: 04 07 00 00 00 00 00 00 04 07 00 00 00 00 00 00  ................
000000e0: 00 00 20 00 00 00 00 00 01 00 00 00 06 00 00 00  .. .............
000000f0: 08 0e 00 00 00 00 00 00 08 0e 60 00 00 00 00 00  ..........`.....
00000100: 08 0e 60 00 00 00 00 00 1c 02 00 00 00 00 00 00  ..`.............
00000110: 20 02 00 00 00 00 00 00 00 00 20 00 00 00 00 00   ......... .....
00000120: 02 00 00 00 06 00 00 00 20 0e 00 00 00 00 00 00  ........ .......
00000130: 20 0e 60 00 00 00 00 00 20 0e 60 00 00 00 00 00   .`..... .`.....
00000140: d0 01 00 00 00 00 00 00 d0 01 00 00 00 00 00 00  ................
00000150: 08 00 00 00 00 00 00 00 04 00 00 00 04 00 00 00  ................
00000160: 54 02 00 00 00 00 00 00 54 02 40 00 00 00 00 00  T.......T.@.....
00000170: 54 02 40 00 00 00 00 00 44 00 00 00 00 00 00 00  T.@.....D.......
00000180: 44 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00  D...............
00000190: 50 e5 74 64 04 00 00 00 b0 05 00 00 00 00 00 00  P.td............
000001a0: b0 05 40 00 00 00 00 00 b0 05 40 00 00 00 00 00  ..@.......@.....
000001b0: 3c 00 00 00 00 00 00 00 3c 00 00 00 00 00 00 00  <.......<.......
000001c0: 04 00 00 00 00 00 00 00 51 e5 74 64 06 00 00 00  ........Q.td....
000001d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000001e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000001f0: 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00  ................
00000200: 52 e5 74 64 04 00 00 00 08 0e 00 00 00 00 00 00  R.td............
00000210: 08 0e 60 00 00 00 00 00 08 0e 60 00 00 00 00 00  ..`.......`.....
00000220: f8 01 00 00 00 00 00 00 f8 01 00 00 00 00 00 00  ................
00000230: 01 00 00 00 00 00 00 00 2f 6c 69 62 36 34 2f 6c  ......../lib64/l
00000240: 64 2d 6c 69 6e 75 78 2d 78 38 36 2d 36 34 2e 73  d-linux-x86-64.s
00000250: 6f 2e 32 00 04 00 00 00 10 00 00 00 01 00 00 00  o.2.............
00000260: 47 4e 55 00 00 00 00 00 02 00 00 00 06 00 00 00  GNU.............
00000270: 20 00 00 00 04 00 00 00 14 00 00 00 03 00 00 00   ...............

Örneğin, main(int c, char**v){f();}bunun yerine bazı baytları değiştirir, ancak /lib64/ld-linux-x86-64.so.2çıktı üretmek için kullanacağımız dizenin uzaklığını değiştirmez.

Bahsedilen dizgenin uzaklığı 0x238 ve 27 byte uzunluğundadır. Sadece 17 bayt (Kullandığımız eğer ve sonuncusu bir satır olacak yazdırmak istediğiniz puts), bu yüzden eklemek 11 almak için ofset için 0x243 ofset, inux-x86-64.so.2. 0x400000 ve 0x243 eklenmesi , hafızasının bulunduğu yer olan 0x400243 değerini verir .inux-x86-64.so.2 .

Bu hafıza adresini elde etmek için, uygulama tarafından tanımlanmış davranış gösteren çok karakterli karakter sabitlerini kullanabiliriz. 0x400243 olan (64) (2) (67) bu nedenle, taban 256 ve gcc en çok karakterli bir karakter sabitleri, büyük-endian bayt sırasını kullanır '@\2C', istenen dize bellek adresi verir.

Son olarak, putsbu bellek konumundaki (boş sonlandırılmış) sokmasını ve sonunda 17 bayt oluşturarak son satırını yazdırır.


Bu sihirbazlık ... bu derlenmiş derlemenin bayt sırasını mı alıyor yoksa?
Patrick Roberts

Sistemimden çıktı (GCC 6.3.1 ile Linux): Uile derlerken -Df=main. Uile derlerken main(){f();}.
MD XF

@PatrickRoberts Bu noktada, varsayımların ne olduğundan emin değilim. Birleştirilen ELF dosyasında yer aldığından, derleyicinin gerçek koddan önce yazdığı her şeye bağlıdır.
Dennis,

@ MDXF Uygun bir hafıza adresi almak için daha kısa bir yol bulundu. Ubuntu 14.04 VPS'imde şimdi çalışıyor, ancak ymmv.
Dennis,

@Dennis Şimdi iyi çalışıyor (dang). Ödül sizindir, eğer hafta sonuna kadar kimse daha kısa bir çözüm bulamazsa.
MD XF

13

Kendini değiştiren Brainfuck , 5 bayt

<[.<]

Çevrimiçi deneyin!

Çıktı:

]<.[<

Açıklama:

Gerçekten basit, kaynağı tersten yazdırır. SMBF'de, programın içeriği işaretçinin başlangıç ​​konumunun solundaki kasette saklanır. Sola kaymak ve yazdırmak kaynak kodunu geriye doğru gönderir.

Bu zorlukla okuma kaynağına izin verildiğinden, bu kesinlikle kurallar dahilinde olmalıdır.


13

Temel Aritmetik Hesap Makinesi , 2 bayt

1=

yazdırır 1.veya:

    |
    |
    |  .

Bu aptal yedi bölümlü ekranlarda.

Üreme için, herhangi bir rasgele hesap makinesi almak; hepsinde bu programlama dili bir şekilde kurulmuş.


1
Tüm hesap makineleri için bu doğru mu? Eminim sürekli ondalık basamak gösterirler
Beta Decay

Öyle değil mi 1.yerine 1x? Ayrıca bu kurallara aykırı olan bir yüzgeç.
Outgolfer Erik

Hayır, 1=ben batırdım. 1xÖrtülü eşittir demek istedim ama =bunun bir düğme olduğunu unuttum .
OldBunny2800

Sadece 1hem TI-36 hem de TI-84 CE cihazımda çıktılar . Bunlar "temel" hesap makineleri olarak sayılmaz mı?
Benjamin Urquhart

Hayır, TI 84 aritmetik hesap makinesi değil, grafik hesap makinesidir. 36'yı bilmiyorum, ama bilimsel bir hesap makinesi olduğundan eminim. Bu cevap dört fonksiyonlu hesap makineleri içindir.
OldBunny2800


12

Brachylog , 1 bayt

w

Çevrimiçi deneyin!

açıklama

wyerleşik "yazma" dır. Burada Giriş yazacak. Giriş serbest bir değişken olduğundan, wyazdırmadan önce tam sayı olarak etiketler. Çalıştığı ilk tamsayı 0.


Here, it will write the Input.Giriş 'programın kendisi mi? Bu, varsayılan olarak bir quine içinde hile yapmak olan kaynağı okumak olarak sayılmaz mı?
MD XF

4
@MDXF "Her zamanki quine kuralları geçerli değildir"
Rob Watts

3
@ MDXF Giriş, bir Brachylog programını çağırırken ayarlayabileceğiniz özel bir Brachylog değişkenidir. TryItOnline'ın Giriş kısmına gider. Burada Girdiye bir şey ayarlamıyoruz, bu yüzden etkili bir değişken. Program değil.
25'te ölümle sonuçlandı

10

Java (OpenJDK 8) , 11 bayt

o->1e8-1+""

Çevrimiçi deneyin!

Çıktı:

9.9999999E7

Sadece bariz cevaptan biraz daha ayrıntılı ()->"".format("%23s",0).

kaydeder

  • 18 -> 16 bayt: PunPun1000 sayesinde daha fazla yuvarlama ve 10'luk güç kombinasyonu
  • 16 -> 13 byte: JollyJoker sayesinde daha iyi formül
  • 13 -> 11 bayt: Kevin Cruijssen sayesinde geliştirilmiş formül

2
()->1E10-1+"", "9.999999999E9" (13)üç bayttan daha fazla tasarruf sağlıyor
JollyJoker

1
Bu değiştirerek 1 bayt tasarruf 1e10için 1e9kullanılarak, veya 2 bayt boş giriş yerine() böyle: o->1e8-1+""(çıkışları 9.9999999E7; uzunluk ve bayt sayısı 11 ).
Kevin Cruijssen

9

05AB1E , 1 bayt

õ

Tek bir yeni satır çıktısı. õboş bir dize iter ve dolaylı olarak bir newline ile çıkarılır.

Çevrimiçi deneyin!

İzleme zevkiniz için diğer bazı 2 baytlık çözümler (çıktı parantez içinde ve tüm çıktılar sonunda yeni bir satırda):

X, (1)
Y, (2)
¾, (0)
¼, (1)
¶, (newline)
ð, (space)
Î, (0)

Yine de 2 baytlık çözüm daha var.


"hangi bir çıktı yöntemidir" sadece programlar için değil, fonksiyon çözümleri için.
Martin Ender

@MartinEnder Bu çözümler fonksiyon olarak sayılır mı? Pek emin değilim, çünkü burada sık sık işlevleri kullanmıyorum.
Okx

05AB1E hakkında yeterince bilgim yok, ancak yalnızca bir işlev nesnesini değerlendiren ifadeler olduklarında işlev olarak kabul edilirler (bunları kullanmaya başladığından beri yaptıklarından şüpheliyim, komutun yürütülmesine neden olur).
Martin Ender

9

V / vim, 1 bayt

o

Bu tek bir yeni satır basar.

Çevrimiçi deneyin!

Bu konuda da işe yarayacak bir sürü değişken var. Örneğin,

O

vim'de ve

Ä
ä
ï
Ï

V.

Ayrıca birçok birçok üç byte çözümü vardır. Örneğin:

3ii
i³i
¬ac

Bunların hepsi V'e özgü.


3ii siz kaçışa kadar genişlemiyor, yani bu üç ya da dört bayt mı olmalı (ya da tuş vuruşlarını)?
algmyr

@algmyr Vim'de haklısın. Öyle olmak zorunda kalacak 4ii<ESC>Ancak V örtülü program sonunda kaçış doldurur.
DJMcMayhem

8

Toplu iş, 12 bayt

@echo %OS%

Bayt sayısı, hem komut dosyası hem de çıktı için son satır

Windows_NT

Öyle görünüyor ki 12 değil 11 bayt
Outgolfer Erik

@EuttheOutgolfer cmd.exeelbette Windows_NT12 bayttan sonra bir CRLF'yi yankılanacak .
Neil,

O zaman netleştirmelisin?
Outgolfer Erik,

8

Altıgen , 3 bayt

o!@

Çevrimiçi deneyin!

Baskılar 111 .

Kırımsız:

 o !
@ . .
 . .

Ancak kod gerçekten sadece sırayla çalıştırılır o!@.

o   Set the memory edge to 111, the code point of 'o'.
!   Print this value as a decimal integer.
@   Terminate the program.



7

MATL , 2 bayt

H

Sonunda yeni bir satır var.

Çevrimiçi deneyin!

açıklama

Pano H 2varsayılan olarak sayı içerir . Hbu içeriği yığına sürükler; bu da sonunda yeni bir satırsonuyla gösterilir.



7

Jöle , 1 bayt

V

Oldukça az Jelly bir byter - bu bir - bu, hiçbir şey girdi olarak sağlanmadığında, sıfıra göre değerlendirilen ve sonucun örtük olarak basıldığı bir a olan sol argümanı değerlendirir 0.

Çevrimiçi deneyin!

Aslında, kod sayfa 256 bayt sadece do 95 vardır değil tam program olarak çalıştırıldığında şu anda belirtilen aralık içinde farklı bir byte çıktı üretmek; bunlar (bayt sırasına göre kod sayfası karakterleri olarak):

¡¢£¦©½¿€ÇÑÞßçıȷñ÷þ"#&',-./0123456789:;?@IMRTVZ\`dmpstxyz{}~°³⁴⁵⁹ƓƈɠḶỌṬḊĖİĿṄȮṖṘẆẊṃọṣṭḃḟḣŀṁṗṡẋż’“

Notlar:

  • 1 baytlık programların çoğu ( 0a basar ve tek bir sıfıra sahip bir liste çıkarır 0) yazdırır , diğerleri basar 1( 0=0ve benzeri)

  • Bir program yapan başka bir bayt, verim ancak tarifnamede göre aralığın dışında olan bir - bu boş bayt (yayınları üreten 0karaktere)

  • bir boşluk yaratır (değişmez)

  • bir satır besleme üretir (değişmez)

  • Şimdi çalışan bazı baytlar gelecekte bunu yapmayabilir - atandığında, neredeyse kesinlikle bir baytlık çıktı üretmeyecek olan niladik değerler için adil birkaç bayt ayrılmıştır (inanıyorum).


1
İçin ölü bağlantıbyte
Weedoze

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.