Çıktıyı kodun iki katı uzunluğunda oluşturun


85

Meydan okuma

Standart çıktıya, programın uzunluğunun iki katı bayt yazan tam bir program yazın.

kurallar

  • Program ASCII karakterlerini standart çıktıya yazmalıdır.

  • Çıktının içeriği önemli değil.

  • Bayt cinsinden ölçülen çıktı, bonusu yerine getirmediğiniz sürece, programın tam uzunluğunun iki katı olmalıdır .

  • Sondaki yeni satırlar çıktının bayt sayımına dahil edilir.

Bonus

Programınız isteğe bağlı nolarak girdi olarak bir sayı alabilir . Öyleyse, çıktı tam olarak n * program lengthbayt olmalıdır . N'nin her zaman pozitif bir tam sayı olacağını varsayabilirsiniz . Herhangi bir giriş sağlanmamışsa, nvarsayılan olarak 2 olmalıdır.

Bunu yaparsan, puanından 25 byte çıkarabilirsin.

En kısa program kazanır.

Kısıtlamalar

  • Standart boşluklar yok.

  • Program en az 1 byte uzunluğunda olmalıdır.

  • Uzunluğunu değiştirmek için kaynak koda gereksiz boşluk eklenmemelidir. Benzer şekilde, yorumlar sayılmaz.

  • Bonusu yerine getirmediğiniz sürece, program giriş kabul etmemelidir. Bonusu yerine getirirseniz, tamsayı tek girdi olmalıdır.

En düşük puan (bayt cinsinden program uzunluğu - bonus) kazanır.

Her dilin en kısa cevabı o dilin kazanmasını sağlar .

Liderler

Burada hem düzenli bir lider tablosu hem de kazananların dile göre genel bir bakış oluşturması için bir Stack Snippet'i var.

Cevabınızın göründüğünden emin olmak için, lütfen aşağıdaki Markdown şablonunu kullanarak cevabınızı bir başlık ile başlatın:

# Language Name, N bytes

Gönderinizin Nbüyüklüğü nerede ? Puanınızı artırmak varsa, olabilir onları içinden vurarak, başlığa eski hesapları tutmak. Örneğin:

# Ruby, <s>104</s> <s>101</s> 96 bytes

Başlığınıza birden fazla sayı eklemek istiyorsanız (örneğin, puanınız iki dosyanın toplamı olduğundan veya tercüman bayrağı cezalarını ayrı ayrı listelemek istediğiniz için), gerçek puanın başlıktaki son sayı olduğundan emin olun :

# Perl, 43 + 2 (-p flag) = 45 bytes

Dil adını, daha sonra büyük afiş snippet'inde görünecek bir bağlantı da yapabilirsiniz:

# [><>](http://esolangs.org/wiki/Fish), 121 bytes


1
Bonus için, çıktının tam olarak n * program lengthbayt olması mı gerekiyor yoksa bu minimum mu?
xnor

2
Kesin olması gerekiyor
Daniel M.

3
Negatif puanları işlemek için kod pasajının değiştirilmesi gerekiyor gibi görünüyor.
El'endia Starman

40
-25 bonus, bazı diller için temel olarak zorunludur, çünkü negatif bir puan almalarını sağlar. Gelecekte, yüzde bir bonus kullanmanızı veya gerçekten bunun için cevapları almak istiyorsanız bonusu soruyu yapmanızı öneririm. Veya, sadece bir bonus yok.
xnor

4
"Giriş sağlanmadı" için boş dizenin geçtiğini varsayıyor muyuz? Bir kullanıcının asla bir giriş yazmadan ve programın beklemeden nasıl yazılacağını göremiyorum.
xnor

Yanıtlar:


138

HQ9 + , 2 bayt

QQ

çıktılar

QQQQ

Burada yasak olmadığını düşünüyorum.


14
Yasak olmayabilir, ama çok fazla ara değil ... bekle, sekiz oy almayı nasıl sağladı?
John Dvorak

58
@JanDvorak HQ9 + 'dan hoşlanmadığım kadarıyla, bu yaratıcı bir kullanım. Bu kullanım, büyük olasılıkla HQ9 + 'nın yaratılması sırasında öngörülmedi; bu, diğer Hq9 + programlarının çoğunda söylenenden daha fazla. Benden +1.
Dijital Travma

13
Q'nun “programın kaynak kodunu” yazdığını bile bilmiyordum. Ben sadece bir Q yazdırdı düşündüm. Önemli farkı tespit etmek için aferin!
Timwi

7
@ LegionMammal978 Teknik olarak bu, programlama dışı dillere izin verilen sabit bir çıktı zorluğudur.
Bir spaghetto

3
Bunun 120 oyu var. QQBir tercümana yazmak için 1.200 temsilcisi .
Stan Strum

95

Shakespeare, 768

Evet, Shakespeare pek bir golf dili değil. 1.536 boşluk çıkar.

Rosencrantz and Guildenstern: A Series of Tedious Events.

Rosencrantz, a count of extraordinary determination.
Guildenstern, a spacy character.

Act I: The Long Conversation

Scene I: A Tortured Friendship

[Enter Rosencrantz and Guildenstern]

Rosencrantz:
 You are a gentle, noble, valiant, loyal, loving companion.

Guildenstern:
 You are nothing!

Scene II: Asking the Hard Questions

Rosencrantz:
 Speak your mind.

Guildenstern:
 You are as fair as the sum of yourself and a daisy. Are you as
 daring as the sum of a big, bold, fiery, feisty, rough, rowdy,
 ham-fisted, hawk-eyed, broad-shouldered, bright-eyed lad and a
 large, yellow, vicious, hairy, wild, scary, long-tailed,
 sharp-clawed, small-eared lion?

Rosencrantz:
 If not, let us return to scene II.

Düzenleme: 256

Tamam, aslında golf oynarım. Yukarıdakilerin mevcut herhangi bir Shakespeare uygulamasında derlenmediğine dikkat edin, çünkü el ile özenle yazdım (ancak doğruluğunu savunmaya hazırım.)

Aşağıdaki spl-1.2.1'de bir uyarı ile C'ye dönüşür ve 512 boşluk verir:

Ummm.Ajax,1.Puck,2.Act I:I.Scene I:A.[Enter Ajax and Puck]Ajax:You old old old old old cow.Puck:You are zero!Scene II:B.Ajax:Speak thy mind.Puck:You are the sum of you and a red cat.Are you as big as the square of me?Ajax:If not, let us return to scene II.

15
Bunu gerçekten golf oynarsan, + 1'erim.
lirtosiast

1
Bu ne tarz bir sihirdir? Böyle bir şeyin var olduğunu bile bilmiyordum ...
Malavos

10
vay, sen golf oynadın. Kutsal cennetler.
Malavos

2
@Malavos Ben sadece büyücülük yanlış yazılmış şekilde hakkında şaka yapıyordum, üzgünüm - hem ne ve muhtemelen iyi olan
kedi

2
Hayır, saldırgan veya savunmacı gibiysem affetmenizi rica ediyorum. Sadece Futurama'ya referans yapıyordum! :) Ciddi bir notta, hala bu cevaba şaşırdım. Sitede daha fazlasına ihtiyacımız var.
Malavos

69

Geri çağırma, 17 bayt

................!

16 NOOP. Sonra hata ayıklayıcı !çağrılır ve belleği konsola aktarır. Hafıza boş, ancak başlık 34 bayt uzunluğunda:

-- STATE DUMP --
----------------

Burada dene .


13
Bu soğutucu cevaplarından biri IMO.
Kedi,


60

CJam, -17 bayt

r2e|i8,*

Kaynak kod 8 bayttır ve -25 bayt bonusu için uygundur.

CJam tercümanında çevrimiçi olarak deneyin .

Nasıl çalışır

r         e# Read a token from STDIN.
 2        e# Push 2.
  e|      e# Logical OR; keep the token if it's not empty, 2 otherwise.
    i     e# Cast to integer.
     8,   e# Push [0 1 2 3 4 5 6 7].
       *  e# Repeat the array the corresponding number of times.

4
Pislik, ıvır zıvır, çerçöp. Aferin.
The_Basset_Hound

1
Negatif bayt nasıl?
Nick T,

3
@NickT 8 bayt (kaynak kod) - 25 bayt (bonus).
Dennis,

16
Disk alanınız azalıyorsa birkaç milyon kopyasını kaydedebilirsiniz.
Robert Fraser

Hayır, meta verinin olumlu olacağını düşünüyorum
CalculatorFeline

47

Python 2.6, 10

print`-.1`

-0.1000000000000000120 karakter olan yazdırır .

String repr'nin daha fazla hassasiyet gösterdiğini unutmayın. print-.1Sadece verir -.1ve print.1/3verir 0.0333333333333doğruluk sadece 13 hane için.


5
Bu artık Python 2.7 veya 3.1'de çalışmıyor .
Anders Kaseorg

@AndersKaseorg Yani repl.it yanlış, öyleyse?
mbomb007

2
@ mbomb007 Görünüşe göre. GitHub, yanlış yaptığı tek şeyin bu olduğunu hemen hemen hiç öneriyor. Ideone CPython ile aynı fikirde.
Anders Kaseorg,

Diğer cevabınızla aynı yorum: bu 21 baytlık çıktı veren son bir yeni satır yazdırmıyor mu?
Martin Ender

1
Demek print`+.1`istiyorsun
mbomb007

46

Tohum , 10 bayt

4 56111240

Bu, Befunge programına derlenir (kaba kuvvet tarafından bulunur).

9k.@

çalıştırıldığında aşağıdaki 20 baytı üreten (CCBI'de test edilmiştir, takip eden boşluğa dikkat edin):

0 0 0 0 0 0 0 0 0 0 

Befunge 98'e yabancı olduğum için, bunun için birkaç kez spec'i kontrol etmek zorunda kaldım:

  • k IP’nin tekrarlanan talimatlara geçmesi nedeniyle amaçlanandan bir kez daha yürütmek bana oldukça kırılmış görünüyor
  • Befunge 98'in yığınlarının altında sonsuz sıfır var
  • . sayı olarak çıktılar, ardından boşluk

18
.... ben .... sadece .... yapamam.
Daniel M.,

44

R, 3 2 bayt

kod

!0           # NOT FALSE

çıktılar

TRUE

Vay, nihayet R, nihayet.

Öyle görünüyor ki {}iş çıktı, çıktıNULL

Bonus 33 16 bayt:

kod

rep(1,number*16)

çıktılar

# if number is not defined
> rep(1,number*16)                     
> Error: object 'number' not found     # output is 32 (or 2*16) bytes long error

# if number is defined
> number = 3                            
> rep(1,number*16)                     # output is 16*number bytes long
> 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

2
Değişken için "sayı" ismini kullanmak "kaynak koduna gereksiz boşluk eklemek" ile eşdeğer değildir
umarım

26

Matlab, 7 5 bayt

@Flawr sayesinde 2 bayt daha az!

123;3

Çıktı:

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

Çıktı , yani 10 bayt içerir .newline ans = newline newline 3 newline


1
İnşallah kimsenin format compactvarsayılan değildir :)
Sanchises

2
@sanchises :-) Evet, bu Matlab’ın tercihlerinin nasıl yapıldığına bağlı. Ama format looseolan varsayılan tercihi
Luis Mendo

2
Nasıl hakkında 123;4? Üç bayt daha kısa mı =)
kusur

@flawr İyi fikir! Kendin gönder!
Luis Mendo

Hayır, cevabınızdan çok fazla esinlenerek =)
kusurlu

25

JavaScript, 2 bayt!

3 baytlık çözümden daha kısa bile olsa:

!0

Çalıştırdıktan truesonra döner.


2
Bunun sadece bir REPL ortamında çalıştığını
unutmamalısınız

21

Python 2, 11

print`id`*1

id22 karakterden oluşan yerleşik dize gösterimini yazdırın :

<built-in function id>

*111 karakter kodu elde etmektir. Ayrıca yapabilirsin print id;00.

Daha sıkıcı alternatif 11'ler:

print'1'*22
print 9**21

Karmaşık sayılarla oynuyorum, ama ne yazık ki print.8/-9jbir karakter kısa
Sp3000

Bunlar, çıktının bayt sayısını 23'e getirerek son bir yeni satır yazdırmaz mı?
Martin Ender

1
@ MartinBüttner Bu kural daha sonra düzenlenmiş, ancak print id,;1takip eden yeni satırı bastırmak için yeterli olması gerekiyor. Ya da sonda bir boşluk eklemiyor.
xnor

@xnor print 9**21çalışmıyor. 21 karakter. print 9**23olsa çalışır
Koishore Roy

18

dc, 10 - 25 = -15

2?A*Ar^1-n

"Giriş yok" için boş bir satır alır.

10 ^ (10 * n) - 1 değerini hesaplar, burada n girişdir, 2 ise giriş boşsa. 9İstenilen uzunlukta bir s dizesi yazdırır .

  • 2 giriş boşsa 2 istifine itin
  • ? girişi yığına itme
  • Ayığına 10 basın (dc'nin kısayolları vardır A- F10 - 15 için)
  • * iki kez pop ve çarpın (girişi 10 ile çarpın)
  • A yığına 10 basın
  • r üst iki yığın elemanını ters
  • ^ üs 10 ^ (10 * giriş)
  • 1- yığının üstünden 1 çıkart
  • n yeni satır olmadan yazdır.

dang, bu çok zekice. Ve orada kod uzunluğu ile şanslı :) :) Belki de henüz başlanmamış için küçük bir açıklama eklemelisin. Ve satır önemlidir; bu nedenle muhtemelen kullanmak gerektiğini düşünüyorum nyerine p.
daniero

17

TI-Basic, 3 bayt

1ᴇ5

Yazdırır 100000.


Aslında, yeni satırın sayılacağını düşünüyorum, bu yüzden sadece 01 bayt için yapabilirsiniz .
lirtosiast

1
Nasıl hakkında ᴇ3? Ve @lirtosiast, çünkü TI-Basic'in bu konuda şüpheci olduğum yeni hatları yok.
Jakob

16

Brainfuck, 14 bayt

+++++++[....-]

Bu biraz matematiksel bir alıştırma. En sayısını göstermek Let +tarafından kodunda karakterlerin ave sayısını .tarafından karakterleri b.

Kod a*b, bayt değerlerini, aaşağıdan yukarıya doğru olan değerlerle 1(bunlar ASCII olmayan baytlardır, ancak teknik özelliklere göre Tamam gibi görünür). Kodun uzunluğu a+b+3. Böylece sahibiz

a*b = 2 * (a+b+3)

İçin farklı değerler çalışılıyor ave bbiz için minimum görüyoruz, a+b+3için sağlanır

a = 4       or       a = 7
b = 7                b = 4

Tecrübeli bir beyin fırtınası programcısı +[[>....]-<<+]seçeneği belirleyecektir.
orthoplex

@orthoplex Yorumunuzu okuduğumda hemen portmanteau'd brainfuck ve programcı: brainfucker
Poke

15

gs2 , -18 bayt

CP437 :W↕0!↨.2

Hex dökümü: 57 12 30 21 17 2e 32

WSTDIN'den sayıları bir listeye okur. ↕0Listeye 2 ekler ve !ilk öğeyi çıkarır. Sonra ↨.(liste [0,1,2,3,4,5,6]) defalarca ( 2) tekrarlanır .

Bu Dennis'in CJam cevap çok benzer - GS2 sadece birleştirir rve ibir byte içine.

Not : Bunun gs2çalışması için uygulamadaki bir hatayı düzeltmem gerekiyordu: daha önce, her programın çıktısına eklenen, tamamen istemeden gizli bir yeni satırı vardı. Sadece bu programı çözmeye çalıştıktan sonra ortaya çıktı (dil, tüm problemlerde izleyen yeni hatları görmezden gelen anarşi golfü için tasarlandı) ve sadece şu anda ustalaşmak için bir düzeltme yaptım, bu yüzden bu cevabı bir tane ile almaktan çekinmeyin tuz.


1
İlk GS2 cevabı herhangi bir kese uygun karakteri olmadığını gördüm!
Cyoce

14

Perl 5, 16 bayt - 25 = -9

$_ =$]x($_*2||4)

Bu, soruna garip bir yaklaşımdır.

-pKomut satırı argümanı ile çalıştırın .

Aşağıda daha fazla metin yazdırmak için özel bir değişken kullanan ve böylece bayt sayısını kısaltan bir Perl cevabı gördüm. Bu yüzden çok daha ayrıntılı özel bir değişken kullandım. 2 karakter değişkenli bir adla 8 karakter yazdırır. Böylece, 16 bayt sayısıyla (16 yapmak için bir boşluk karakteriyle doldurulur), Perl sürümünüze bağlı olarak Perl sürümünün basıldığı 2 * $]yerde $]yazdırılır 5.xxxxxx. Girdi olmadan dört kez basar, eşit 8*4veya 32kodun bayt sayısını iki katına çıkarır .

Perl'i seviyorum.


Bunun boş girdi için başarısız olduğunu düşünüyorum. Kurallara göre, herhangi bir giriş yapılmazsa, çoklu varsayılan 2 olmalıdır.
Alex A.

@AlexA. Kahretsin, bunu özledim. Golf kodunu değiştirmek için yeni.
Gelenleri düzenleyin

2
Selam, bir program komut varsayılan olarak, burada yardımcı, olabilecek birkaç ipucu popve shiftüzerinde çalışmak @ARGV(bir de subonlar üzerinde çalışmak @_) böylece bir şeyler yapabileceğini mi $n=pop||2aşağı ilk kod bloğunu almak için ve sahip ;}sonunda Neredeyse her zaman sadece }başka birini kurtarmak için olabilir . Daha fazla karakter kaydetmenize yardımcı olabilecek bir şey, dize tekrarlama operatörü x, göz önünde bulundurun print 1x20veya bu satırlar boyunca bir şey ... :) Yardımcı olur!
Dom Hastings,

@DomHastings Man, teşekkürler! Yardımlarınızdan dolayı toplamı 2 bayta indirdim :) Önerileriniz için çok teşekkür ederim.
Codefun64

1
Sanırım bunu kısaltabilirsin print"n"x(21*pop||42). Komut satırında çalıştırınperl -e'print"n"x(21*pop||42)' 3 | wc -c
hmatt1

14

Pyth , 10 9 - 25 = -16

Dennis'den -1

**N9?zvz2

[İnput] * 9 alıntı karakterini veya giriş boşsa 2 * 9 yazdırır.

isaacg burada daha kısa bir cevaba sahip

Pyth , 1 bayt

T

Yazdırır 10. Bu, 10'a başlayan bir değişkendir.


.X hatalarla çalıştıysa faydalı olur. Neden olmadığına dair bir gerekçe var mı?
lirtosiast

2
En iyi tahminim, QPyth'un gerçek kod yürütülmeden önce girişi değerlendirmesine neden olmasıdır. **N9.xvz2beklendiği gibi çalışır, ancak daha kısa değildir **N9?zvz2.
Dennis,

2
Sondaki yeni satırlar çıktının bayt sayımına dahil edilir. Tçıktılar 10ve yeni bir satır. Kullanım d, ekli bir yeni satır alan bir alandır
Stan Strum

9

Makarna 0.0.2 , 23 karakter

print tobase pow 32 9 2

Sonunda yeni bir satır olmadan, 46 karakter uzunluğunda olan (ki ) rahatlıkla sonuçlanan ikili olarak 32 9'u yazdırır 1000000000000000000000000000000000000000000000.


9

JavaScript, 4 bayt

~$ cat main.js
+1/0
~$ nodejs main.js
Infinity

Bunun ES6: P olmadan mümkün olan en kısa JS çözümü olduğunu düşünüyorum.


Hangi NodeJS sürümüne sahipsiniz? Bu benimkiyle çalışmıyor.
Dennis

1
Bu aynı zamanda Firefox konsolunda da çalışır.
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

1
Sondaki yeni satır çıktı uzunluğuna dahil edilmelidir.
lirtosiast

Node.js v0.10.40, hiçbir yazdırma komutu olmadığından hiçbir şey yazdırmıyor. Farklı bir Node.js sürümünüz var mı yoksa bu yalnızca satırın değerlendirmesini basan bir kabukta mı çalışıyor? (bu durumda bu cevabın geçerli olacağını sanmıyorum).
Nateowami

4 bayt? Lütfen bunu gerçekten doğru boyutta yapın.
Star OS

9

Cı, 27 25

main(){printf("%50f",0);}

2 bayt attığınız için teşekkürler @ Titus


Ve C'deki rakipsiz 16 baytlık çözümüm için buraya gidin: https://codegolf.stackexchange.com/a/111330/16513

^ Hata kodu derleyicinize bağlı olabileceğinden rekabet etmediğini söylüyorum. Ayrıca bu çözümde GCC kullandığımı da unutmayın. Ayrıca kural 1 'i ihlal edip etmeyeceğinden emin değilim, sanırım muhtemelen devam etti ve rekabet etmedim diye etiketledim.


1
Geçerli bir C programı olarak sayıldığını sanmıyorum ama main(){printf("%0.XXf",0);}çalışıyor.
wefwefa3

2
@Zereges Hayır, C genellikle malzemeleri doğru şekilde kullanmanıza izin vermeyen "örtülü bildirim" kuralına sahiptir #include. Derleyici bir uyarı verecek ve bazen çökecek, ancak genellikle işe yarayacak .
anatolyg

1
@AlbertRenshaw Ayrıca, burada çalıştığını sanmıyorum .
Zereges

1
27 * 2! = 38.
mbomb007

1
@Zereges. Bu kod tanımsız davranış sergilemiyor. "Örtülü bildirim" ve "örtük iade türü" özellikleri, son standartlarda kullanımdan kaldırılmıştır, ancak kullanımlarına hala izin verilmektedir ve sonuçlar iyi tanımlanmıştır. Bu özelliklerin kullanımında tanımsız davranışlara neden olan durumlar vardır, ancak bu kod bunları içermez.
Peter

7

V , 2 Bayt

Bu çıkışlar

ÿÿÿÿ

Çevrimiçi deneyin!

açıklama

Bu gerçekten çok çirkin bir cevap ve V'in içindekileri kötüye kullanmaya çalışıyor. Esasen nasıl çalıştığı, ÿV'de programın bittiğini işaret eden bir komuttur ve bekleyen komutların tamamlanması gerekir. Aksi takdirde, bazı örtük sonlar işe yaramaz ve tercüman daha sık kilitlenir. Bu komut program sonunda otomatik olarak birkaç defa gönderilir ve çoğu zaman çıktı üzerinde bir etkisi olmaz.

éTek bir karakter ekleyen bir komuttur. Bununla birlikte, ham bir bayt kapmak suretiyle gerçekleştirir, bu nedenle ÿ"son" olarak yorumlamaz, onu "eklemek için gereken karakter bu" olarak yorumlar. Bu karakteri bir yerine 4 defa eklemesini sağlar.


7

bash, 11 bayt

İşte bir veri sıkıştırma aracının hoş ironik bir kullanımı :)

gzip -f<<<2

İşte çıktının onaltılık bir dökümü (22 bayt) ...

0000000: 1f 8b 08 00 e3 ce 32 59 00 03 33 e2 02 00 90 af  ......2Y..3.....
0000010: 7c 4c 02 00 00 00                                |L....

Bu, 22 bayt "genişletilmiş ASCII" (ör. Karakter başına 8 bit) verir. Soru gönderisi hakkındaki yorumları okursanız, OP'nin ASCII tanımına uyuyor gibi görünüyor.
Wossname

On TIO benim 16 var, ama benim linux makinede, ben 34 aldım
Stan Strum

@StanStrum, TIO'nun ne olduğunu bilmiyorum, ama linux altındaki 34 garip. Belki de normalden farklı anahtarları kullanmak için gzip takmışsınızdır?
Woss ismi

Durum böyle mi bilmiyorum ama bu garip görünüyor. Bazı LiveCD'lerde programlarımdan birini batırıp karışmadığımı görmek için çalışacağım @Wossname
Stan Strum

1
Ben o adam değilim ve yeni kazandığım 129 temsilciliğimden faydalanmayacağım. Linux kurulumumda işe yarayan bir sürüm yapıp yapamayacağımı göreceğim
Stan Strum

6

dc, 19 - 25 = -6

2?19*[1n1-d0<l]dslx

Sayı alır (2 yığına yedek olarak basılır) ve bunu 19 ile çarpar. A 1(yeni satır yok) basar ve sayıyı azaltır. Sayı 0'dan büyük olduğunda döngüler.


6

C ++, 80 bayt

#include<iostream>
int main(){int i=0;while(i<20){std::cout<<&i;i++;}return 0;}

yeni satır karakterinin iki karakter olduğuna dikkat edin. (olmasını istemiyorsanız, aynı bayt sayısına geri dönmek için i <20 ila i <= 19 olarak değiştirin.)

Örnek çıktı (her zaman değişecek)

0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C

aynı 8 karakter hafıza adresi 20 defa.


Bazı golf püf noktaları: bir forilmek bir ilmekten daha kısadır whileve parantezleri düşürmenize izin verir, kullanımı biraz daha ucuzdur cstdiove sadece printfbir iptir ve hiçbir şey döndürmenize gerek yoktur.
Luke

Yaklaşımınızı 63 bayta sorabilirsiniz: #include<iostream> int main(){for(int i=10;--i;)std::cout<<&i;}Ancak, biraz farklı bir yaklaşıma sahip daha kısa bir cevap var.
movatica

6

CJam, -9

q_,{i}{;2}?G*'X*

açıklama

  • q_,

Girişin tamamını okur ve iter, sonra uzunluğu iter.

  • {i}{;2}?

Girişin uzunluğu sıfırın üzerinde ise, bir tam sayıya dönüştürün. Aksi takdirde, girişi açın ve 2 düğmesine basın.

  • G*

16'ya (program uzunluğu) basar, sonra giriş yoksa ya da girişle 2 ile çarpılır.

  • 'X*

X'e basar ve istifin üstünde çarpar.


@ThomasKwa Whoops. Bir saniye içinde güncelleniyor.
The_Basset_Hound

Virgül gerekli değildir, ancak "eğer" mantıklı bir şekilde yaparsanız tamamen "veya": " q2e|iistediğiniz numarayı vermekten
kaçınabilirsiniz

Ayrıca 'X yerine S kullanabilirsiniz, tek sorun çıktıyı seçene kadar görünmeyecek olmasıdır (çevrimdışı olarak çalıştırırsanız ve bir dosyaya yönlendirirseniz sorun değil)
aditsu

Ah,
neyse

Koşullu bile olsa, bunu kısaltabilirsiniz. Boş bir dize zaten falsey olduğundan, uzunluğu hesaplamanız gerekmez. Ayrıca çıktıya katkıda bulunmadığından boş dizeyi yığından çıkarmanız gerekmez. Bu da başka bir dal için desteklerden kaçınmanıza izin verir. Ben cevapların hiçbirinde baktı önce bu geldi: r_{i}2?SB**.
Reto Koradi

6

> <> , 19 + 2 (-v bayrağı) - 25 = -4 bayt

l?!2f4+*v
-1o;!?::<

burada test et!

Teşekkürler Cole ve Sp3000

İlk önce yığın uzunluğunu kontrol eder, eğer yığına 0 koyulursa 2 olur. Onu 21 ile çarparak (kod uzunluğu), sonra bu sayının unicode gösterimini verir ve 1 ile azaltır, 0'a kadar döngüler (karakterleri görmek için çıktıyı denetlemeniz gerekir, çünkü tarayıcı bunları göstermez)


1
Evet, cevabınızı mahvettiğim için üzgünüm (ama eğer daha iyi hissettiriyorsa benimkinden daha kısa). Düzenleme: vururlar çok kısa bir süre içinde girerler, şu anda olduğu gibi girişiniz "n'in her zaman pozitif bir tamsayı olacağını varsayabilirsiniz. Giriş yapılmazsa, n'nin varsayılan 2 olması gerekir." Ayrıca çok fazla karakter basabileceğini de düşünüyorum (Bu sayı 14 ile 0 arasındadır, sayımla 15 karakterdir, 14 değil. Eğer haklıysam l0=?2f6+*v, ilk satır 1-::0=?;o>olarak ve ikinci olarak doğru yapmalıdır.
cole,

Ne demek istediğinden emin değilim. Her durumda 0 yazdırmamalı. İlk yığın çıktıları olarak bir 2 koymak (EDIT: yapıştıramayacağım şeyler), en azından bu karakter sayacını kullanarak , 28 karakterdir.
torcado

Şimdi ne dediğini anlıyorum. "Programınız isteğe bağlı olarak n, n, giriş olarak bir sayı alabilir" anlamına gelmişti, yani giriş 2 olur. Cevabı düzenleyeceğim, teşekkürler! (ayrıca bazı rakamlar yerine bir dize kullanarak kaydedebilirsiniz)
torcado

Yardım etmek için mutluyum, özellikle> <> ise.
cole,

2
?!genellikle daha iyidir0=?
Sp3000

6

JavaScript (ES5), 68 bayt - 25 bonus = 43

alert(Array(1+(+prompt()||2)).join(document.scripts[0].textContent))

(tarayıcınızın pasajın güvenlik nedeniyle çalışmasına izin vermemesi durumunda, bu bilgiyi deneyin http://jsfiddle.net/thePivottt/c3v20c9g/ )

Bu komut dosyası yalnızca en az DOM3 (with Node.textContent) ve ECMAScript 5 (veya daha eski bir sürümü) izleyen bir tarayıcıda çalışır . Yapmaya çalıştığım standartlara uygun ve mümkün olduğunca uyumlu. Ayrıca, betiğin scriptbelgenin ilk öğesinde olduğunu varsayar .

Aslında betiğin kendisinin birden fazla kopyasını birleştiriyor, ki bu harika . SE'deki pasaj aracının komut dosyasının etrafına fazladan boşluk koyduğunu unutmayın. Bu boşluğu boş bırakabiliriz .trim()ama programın SE'nin karışması olmadan mükemmel olduğunu düşünerek gerekli görmüyorum. Mükemmel çalıştığını görmek istiyorsanız, sadece bu HTML5 dosyasını kaydedin.

<!DOCTYPE html>
<html>
  <head>
    <title>Minimalist HTML5 page</title>
    <script>alert(Array(1+(+prompt()||2)).join(document.scripts[0].textContent))</script>
  </head>
</html>

Bu komut dosyası kullanır promptve alertçünkü console.logçoğu modern tarayıcı kullanıyor olsa da hiçbir standardın parçası değildir. Geçen tekrar sayısı geçerli bir sayı değilse ya da boşsa, varsayılan olarak 2 olur. Giriş ondalık sayı ise, program geçersiz dizi uzunluğundan ötürü kilitlenir.

Kod, JavaScript’in birkaç ilginç özelliğini kullanır:

  • Array(1+(+prompt()||2))

    • Array(INT) bir INT hücreleri dizisi yaratır.

    • +prompt()bir girdi alır ve sayıya dönüştürür. Girdiyi bir dizge olarak geçirirsek, Arrayişlev basitçe onu bir elemanlı diziye saracaktır.

    • +prompt()||2Çünkü eğer girdi döndüren truthy o 2 döndürür başka.

    • Bu kodun tamamı, N'nin talep edilen tekrar miktarından daha fazla olduğu bir N boş eleman dizisi yaratır.

  • .join(document.scripts[0].textContent)

    • Dizinin join(STRING)yöntemi, tüm hücreleri birleştirerek sağlanan STRING değerini değerler arasına koyarak bir dize oluşturur. Bu programda, dizide N + 1 boş eleman var ya da tam olarak noktalar arasında N var. Sonuç, sağlanan STRING değerinin N katını içeren bir dize olacaktır.

    • document.scripts[o]<script>belgenin ilk elemanıdır.

    • textContentAit Nodeörneklerini onları ve komut dahil çocuklarının düğümler, içinde bulunan bütün metni döndürür.


ES6'ları kullanıyorsanız str.repeatve hala kodu çıktıyorsanız , skoru 26'ya düşürdüğünü , ancak biraz sıkıcı olduğunu unutmayın: P
Domino

26, nereden geldiğini bilmiyorum, şimdi 33 alıyorum. Muhtemelen biraz uyumam gerekir.
Domino

Bazı tarayıcı ayarlarının bir pasajda bilgi istemi kullanımını engelleyebileceğini unutmayın. Çalıştırmak için kaydetmeniz gerekebilir.
Domino

6

JavaScript ES6, 33 - 25 = 8

(a=2)=>Array(a*33).fill(0).join``

Çevrimiçi deneyin!


Bu kodun konsolda çalışmasını sağlayamıyorum. Doğru mu? "Yakalanmamış SyntaxError: Beklenmedik belirteç =>"
Malavos

@Malavos, en son Firefox gibi es6 uyumlu bir tarayıcıya ihtiyacınız var. Chrome varsayılan args
afaik'i

UCBrowser kullanıyorum, ama bu doğru! Zaten krom ve gekoya dayanıyor. Her gece denedim "var" 000000000000000000000000000000000000000000000000000000000000000000 ". Güzel! Kodunu bana açıklar mısın? Ben bir acemiyim.
Malavos

2
@ Malalavos Kodlanan 33aslında kodun uzunluğudur. Bu uzunlukta yeni bir dizi oluşturur bunu doldurur, OP göre 2'ye varsaymak giriş parametresidir ve birleştirilen dize döndürür. 33*aa
DankMemes

2
Dizinizi bir ekstra elemanla oluşturarak katılım ile doldurabilirsiniz Arrary(1+a*<length>)vejoin`0`
Shaun H

5

Julia, 42 bayt - 25 = 17

print("@"^42((r=readline())>""?int(r):2))

Bu, kullanarak STDIN'den bir satır okur readline(). Boşsa, yani hiçbir giriş sağlanmadıysa, n bir tam sayıya dönüştürülen giriş olarak tanımlanır. Aksi takdirde , n 2. Daha sonra 42 baskı olduğunu n @ STDOUT s.


5

Perl, 18 - 25 = -7

print$=x(<>*9||18)

Özel değişken $=, aka $FORMAT_LINES_PER_PAGE, ömrünü olduğu gibi başlatır 60ve bu nedenle yalnızca gereken bayt çıktısının yarısı kadar çoğaltılması gerekir.


1
Çok benzer bir cevabı vardı: print$=x9x(pop||2)güzel!
Dom Hastings
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.