Matematiksiz Çıktı Pi [kapalı]


56

Mümkün olduğunca az bayt cinsinden, işiniz çıktı veren bir program yazmak:

3.14

Tabii ki geç bir Pi kutlamada! :)

kurallar

İstediğiniz şekilde yapabilirsiniz, ancak bazı kısıtlamalar vardır.

  • Sen olabilir değil her yerde programında aritmetik işlemleri kullanın. Bunlar arasında +, -, *, /, %, ^(üs), vb ... Bu aynı zamanda (genellikle artırma içerir ++(eksiltim,) --,) bit seviyesinde işlemler ve fonksiyonları inşa herhangi gibi bir yedek olarak kullanılabileceğini sum(), prod(), mod(), double(), pow(), sqrt(), inc(),, dec()etc ... (Yazarın takdirine göre)
  • Rakam 3, 1ve 4olabilir değil kodunuzda herhangi bir yerde görünür.
  • Sen olabilir değil dil için bir yedek olarak olabilecek her türlü önceden tanımlanmış değişkenler / sabitleri kullanın 3, 1ve 4. (Yazarın takdir yetkisi)
  • Ayrıca olabilir değil gibi herhangi bir trigonometrik fonksiyonlar kullanmak sin(), cos(), tan(), arcsin(), arccos(), arctan(), sinh(), cosh(), tanh(), vb ... (Yazarın takdirine)
  • Sen olabilir değil yerleşik veya Pi (veya önceden tanımlanmış değerleri kullanın 3.14). Web isteği yok .
  • Programınız olamaz (çalışan yanı sıra) her türlü giriş yapılmalıdır.
  • 3.14ise sadece çıkış, bazı uzun / geniş çıkış parçası olamaz olabilir şey ..

kazanan

18 Nisan'daki en az bayt miktarına sahip olan cevap kazanır. İyi şanslar!

Akıllı beyinlerden akıllıca cevaplar bekliyorum! Herhangi birini malbolge? : P


3
Bunun ^üstelleştirme XOR işleci değil, üstelleştirme işleci olduğunu netleştirmek isteyebilirsiniz .
ace_HongKongIndependence

2
Bitsel operatörlere izin verilir mi?
ProgramFOX

1
@ProgramFOX Eh, normal işlemler için bir yedek olarak kullanılabilir, yani, hayır. İzin verilmedi. Gönderiyi düzenlerim.
kukac67

1
Web isteklerine izin veriliyor mu?
swish

7
@swish: Web isteklerini kullanmam, çünkü bu artık komik olmayan Standart "boşluklar"
ProgramFOX

Yanıtlar:


25

CJam - 8 6

S`,'.E

CJam geliştirdiğim yeni bir dil, GolfScript'e benzer - http://sf.net/p/cjam .
İşte açıklama:

Suzaya önceden başlatılmış bir değişkendir ("")
`son değerin dizilimini gösterir - ki bu tam olarak " "(3 karakter)
,dize uzunluğunu hesaplar (3)
'.nokta karakteri
E14'e önceden başlatılmış bir değişkendir; 3, 1 ve 4'e izin verilmez, ancak 14 hakkında hiçbir şey söylemez :)

Backtick fikri için Doorknob'a Kredi


1
@Brilliand kullanımını kabul ediyorum E.
kukac67

6
@ kukac67 Henüz resmi bir sürüm yayınlamamasına rağmen (bugün geliyor), şu anki CJam kodunu hg üzerinden erişilebilir duruma getirdim. Eğer soruyu göndermeden 1 gün önce CJam kodunu alırsanız, programımı doğru şekilde çalıştıracak (bu sorunu çözmek için herhangi bir değişiklik yapmadım). Ama yine de umursamıyorum.
aditsu

33
HQ9 + π ... geliştirme zamanı
Nzall

2
@AnonymousPi Herkes seçtiği cevaplara oy vermekte serbesttir. Belki de kısa olmasalar bile diğer cevaplardan daha fazla etkilenirler.
aditsu

2
Neden 14'e önceden başlatılmış bir değişkeniniz var?
user2357112

113

PHP - 22 bayt

<?=date('n.j',8899e5);

1998 yılında Pi Günü gerçekten harikaydı!


13
@ kukac67: n.jformattır ve 8899e51998'de 14 Mart'taki Unix zaman damgasıdır .
ProgramFOX

7
Bu çok zekice.
Amal Murali

7
Kaldırarak 7 karakter kaydedebilirsiniz ,8899e5. Yılda bir kez doğru olacaktır.
Damir Kasipovic

1
@Timo Haklısın, ama geçersiz "3";) rakamını içeriyor.
Karadelik

18
@Blackhole 20 byte: <?=date('w.W',78e5);1 Nisan 1970, 14. haftada Çarşamba idi
primo

92

C, 39

Makinenin çok az miktarda olduğunu ve IEEE kayan nokta standardını kullandığını varsayar.

main(){printf("%.2f",*(float*)"P@I@");}

İşin aslı, "P@I@"aslında bununla ilgili PIdeğil, ancak 0x40494050bunun temsili olanla eşdeğerdir .3.144550323486328

http://ideone.com/uXVEtl


3
Bu oldukça harika.
wchargin

1
Kodunuz küçük bir endian makinesinde yazı yazmayı kabul ediyor.
Nayuki

@NayukiMinase, evet haklısın, işaret etmeye değiyor. Ayrıca IEEE kayan nokta standardının kullanıldığını varsayar.
Michael M.

Ve tanımsız davranış (değişken işlevinin örtülü beyanı) içerir
rubenvb

5
Bu kod aslında makinenin Michael'ın makinesi olduğunu varsayar :-).
Konrad Borowski

50

dc , 11 9 bayt

zE[.]znPp
  • z Geçerli yığın derinliğini (0) istifin üzerine itin
  • EE 16'ya basın (== 14 10 )
  • [.] "." Dizisine bas.
  • z Geçerli yığın derinliğini (3) istifin üzerine itin
  • n Pop 3 ve sayı olarak yazdır
  • PPop "." ve char olarak yazdır
  • p 14 pop ve newline ile sayı olarak yazdır

Çıktı:

$ dc <<< zE[.]znPp
3.14
$ 

Yani "giriş üssünü kullan" bir operatör mü? Aritmetik bir işlem gibi kokuyor ama muhtemelen hala geçerli.
Brilliand

@Brilliand Soruda temel dönüşümleri yasaklayan hiçbir şey yok. Aslında OP, buradaki bir yorumda temel dönüşümleri teşvik ediyor gibi görünmektedir. Codegolf.stackexchange.com/a/25681/11259
Digital Trauma,

Geçerli olduğuna katılıyorum; Ben sadece temel dönüşüm sayı sözdiziminin bir parçası yerine bir operatör olduğunda, satır içi veriler ile aritmetik işlem arasındaki çizgiyi bulanıklaştırdığını düşünüyorum.
Brilliand

Bunun 15 bayt olması gerektiğini düşünüyorum?
Kayıtlı Kullanıcı

9
@ AdityaPatil Neden? dcburadaki diğer diller gibi bir dil ve tercümandır. dc -e sadece bu tercümanın çağrılmasıdır. 9 baytlık programı bir dosyaya kolayca kaydedip çalıştırabilirdim dc pi.dc. Bu baytların sayılması gerekiyorsa, aynı şey tüm diğer diller için de geçerli olacaktır. örneğin python , tüm python girişlerine veya ruby golfscript.rb tüm golfscript girişlerine dahil edin. Burada kabul edilen konvansiyonun, özel seçeneklerin geçirilmesi gerekmediği sürece bunları dahil etmediğine inanıyorum.
Dijital Travma

42

JavaScript ( ES5 ) 20 bayt

M.buettner'ın JS çözümünün bir çeşididir.

(x='.'+0xE).length+x

Düzenleme: JavaScript ( ES5 ) 18 bayt

ComFreek'in base64 kod çözme işlevini kullanma fikrinin bir çeşididir.

atob('Mw')+'.'+0xE

Düzenleme: Javascript ( ES5 ) 16 bayt

Eğer unary +operatörünün bir rakamı bir sayıya çevirmesine izin verilirse, aşağıdakilere düşürülebilir:

+atob('MDMuMTQ')

VAOV! Bu gerçekten zekice!
kukac67

9
@NateEldredge Bu, dize bitiştirmedir, aritmetik değil.
14'te

+Kabul edilenlerin kullanımı burada mı?
phuclv

1
Javascript çözümünü en şık buluyorum ve içinde '4' olduğunu fark edene kadar mayını göndermek üzereydim: atob ('My4xNA =='), lol.
rdev5

1
@Dennis haklısın, hala orada. Sonuçları konsoldan kopyalayıp yapıştırdığımda bile var. Bundan memnun değilim, bu yüzden 16 baytlık çözüme geri döneceğim.
nderscore

39

Haskell, 41 bayt

Avustralya'da pi günü ne zaman?

p=(\(a:n:y:t:i:m:e:_)->[m,a,t,e])['.'..]

Eklemek için düzenlendi: dize çıktı, diğer Haskell cevap gibi, tırnak vardır. 33 puanı alabilirsiniz ve kurallara kesinlikle uyun, ancak daha az eğlenceli:

p=putStr$map([','..]!!)[7,2,5,8]

Haha, vay. Bu iyi!
Ry

Bunun neden işe yaradığını açıklayabilir misiniz?
yhager

5
Bunu çok beğendim, +1. Ancak teknik olarak ".." nın yasaklanan artım işlecini çağırdığını düşünüyorum. (Aslında olumlu tepkiler de bir artış operasyonu başlattı, bu yüzden de yasaklanmalı ;-)
Marc van Leeuwen

Aslında bunu düşündüm - daha da kısa bir cevabım oldu: p=[2.9,2.92..]!!([0,6..]!!2)... ve ..bunda yanlış görünüyor. Ancak Haskell kesinlikle yazılmıştır ve verdiğim cevabın artması aritmetik Chardeğildir Numve aslında yasaklanmış olan şeydir. fromEnumOnları bu şekilde kullanmak için karakterleri sayılara dönüştürmek için bir ' e ihtiyacım olacaktı. Neyse, vicdanım açık :)
bazzargh

6
@hager: ['.' ..] "./0123456 ..." (vb.) karakter dizisidir. (a: n: y: t: i: m: e: _) ilk 7 karakteri dışarı çeken bir desen eşleşmesidir, [m, a, t, e] 4 tanesini "3.14" olarak değiştirir. Yapmak istediğin şeyin bu olduğunu bilerek, doğru yapıya sahip kelimeleri bulmak için sözlüğü aramak meselesidir. Yaptığım ... örneğin başka bir çift "en çirkin kıyafeti". Sonra şaka ile geldin :)
bazzargh

32

Mors Kodu, 33 Bayt

morse -d ...-- .-.-.- .---- ....-

Teknik olarak konuşursak, bilgi sadece 21 bayt alır.


11
Kesinlikle burada mors kodu için daha fazla golf çözümüne ihtiyacımız var ...
saat

26
Teknik olarak konuşursak, 21 bit diyebilirim , bayt
Michael M.

14
@ Morse kodu bir nokta, çizgi veya boşluk olabileceğinden, michael, 1 işlemi saklamak için 1 bitten fazla gerektirmez mi?
smcg

5
@smcg ButSpacesAreForWeakPeopleWhoCan'tReadThingsLikeThis
Cole Johnson

8
Mors kodunu sevdiğim kadar (ve bu nedenle bu çözümü) - ancak kural 3'e göre değil: "Dilinizin 3, 1 ve 4 yerine geçecek olan önceden tanımlanmış değişkenleri / sabitleri kullanamazsınız." ya da kural 2: "3, 1 ve 4 rakamları kodunuzda hiçbir yerde görünmeyebilir."?
kratenko

27

J - 15 11 10 karakter

Fantastik kullanarak, daha kısa yaptım i:.

6{i:6.28j8

Açıklaması:

  • 6.28j8 - Kompleks sayı 6.28 + 8i.
  • i:- Sihir yapılan yer burasıdır. i:A + Bi kompleksinde, B = 0, B + 1'i [-A, A] aralığından eşit aralıklarla yerleştirir.
  • 6{ - Endeks 6'daki elementi alın, ki bu tam olarak 3.14 olur.

Daha önce, aşağıdaki saçmalık vardı:

|.'.'2}":22b8d5

Patlama ile açıklanacak:

         22b8d5  NB. 8d5 in base 22 = 4163
       ":        NB. convert to string
  '.'2}          NB. change character at index 2 to '.'
|.               NB. reverse to make '3.14'

Bunun yerine, |.'.'2}":22b8d5tersine çevrilmesi gerekmeyen bir sayı seçerek 2 karakter kaydedebilirsiniz:'.'1}":16bbc6
rationalis

3
@epicwisdom 3, 1 ve 4 rakamları yasaklandı. Formda bir sayı kullanmam gerekiyor 41X3çünkü sadece 0 ve 2 indekslerindeki karakterleri değiştirmeme izin veriliyor.
algorithmshark

20

Linux komut satırı, 35 bayt

Bu, kazanmaya yakın hiçbir yer değil, ama burada eğlencesi için:

ping -w2 67502862|grep -oP '.\..\d'

Çıkış (2 saniye sonra):

$ ping -w2 67502862|grep -oP '.\..\d'
3.14
$

Sorudan alıntı yapın: "Web isteği yok."
Doorknob

9
@Doorknob ICMP yankı isteği! = Web isteği. Ne olursa olsun, ping 4.6.3.14'e (ki cevap alamadım), bu yüzden internetten herhangi bir yararlı bilgi alamadım gibi geliyor
Digital Trauma 3

10
@Doorknob Ama bu hala sizi rahatsız ediyorsa, bunu yapabiliriz :;ping -t${#?} -qc2 67502862|grep -oP '.\..\d'. Bu, TTL'yi 1'e ayarlar, böylece giden ICMP yankısı, internete yaklaşmadan önce yönlendiriciniz tarafından düşürülür
Digital Trauma,

1
Kullanarak 9 sn kaydedebilirsiniz ping -w2 67502862. (Ninja düzenleme çünkü
w1'i

@lolesque Teşekkürler. Golf puanını iyileştirmiyor olsa da ;-)
Digital Trauma

16

GolfScript, 18 13 12

'.'.`,\.,n`,

Eski versiyon:

'...','.'.,'....',

Çok sanatsal, sadece 3 eşsiz karakter! ;)

Nasıl çalışır:

# cmd   # stack
'...',  # 3
'.'.    # 3 '.' '.'
,       # 3 '.' 1
'....', # 3 '.' 1 4

İşte 12 karakterli versiyonun açıklaması (çok daha ilginç, IMO):

'.' # '.'
.`, # '.' 3
\.  # 3 '.' '.'
,   # 3 '.' 1
n`, # 3 '.' 1 4

Çünkü çalışır n`,olduğunu 4, çünkü n`olduğunu '"\n"'. Aynı mantık '.'`,. Ayrıca, bir karakter kaydetmek için yeni bir dize oluşturmak yerine takas edilir (thanks @algorithmshark).

Alternatif sürüm:

'pi ','.'.,'day!',

veya

'Hi ','.'.,'PPCG',

Veya bu dizgilerdeki herhangi bir şey, gerçekten. : P


Sadece 3 farklı karakter, harika :)
aditsu

'.'.`,\.,n`,Bir karakter kaydetmek için çalışmak ister misiniz ? Yeniden kullanma '.'çoğaltarak ve değiştirerek.
algoritmshark

@algorithmshark Yep, teşekkürler!
Doorknob

Bu çok zekice! +1
VisioN

Bu mors kodu versiyonu gibi görünüyor
pwned

14

OP'nin cevabı.

Mathematica, 21 20 18

Bu ucuz hissettiriyor ...

Range[2,5,.06][[20]]

veya

Range[2,5,.02][[58]]

Nasıl yapılacağını 18 buldum:

Range[-.86,5][[5]]

Haskell, 49 48 12

(48 yeni satır karakteri içerir)

p=[-6..]
r=concat$show(p!!9):".":(show$p!!20):[]

rFonksiyonu arayarak çalıştırın .

Yukarıdaki Mathematica'daki gibi yöntemi kullanarak, bunu GHCi'ye yazabilirsiniz:

[-2.86..]!!6

Java, 87 86

class P{public static void main(String[]a){System.out.print("tri".length()+"."+0xe);}}

Scala, 27

Score_Under tarafından önerilen şekilde Java'dan çevrilmiştir . (Scala'yı gerçekten tanımıyorum)

print("tri".length+"."+0xe)

Oh, 0xezekice. JS ile olan cevabımı geliştirmemin sakıncası var mı? ;)
Martin Ender

Java'nın çoğu doğrudan bayttan dönüştürülebilir, bu genellikle baytlardan tasarruf etmek istiyorsanız daha kısadır - eğer bir komut dosyası olarak kullanıyorsanız, her şey sadece: print ("tri" .length + "." + 0xe)
Score_Under

Evet, Julia’da [-.86:5][5]11’den daha kısa olan aynı şeyi düşündüm, ancak aralıklar sadece matematik olduğu için sayılmadığını düşündüm.
gggg

12

Bash, 50

Yardım / hata mesajları dış kaynak değildir, bir komutun çıktısıdır!

Eğer bir şey kural kötüye kullanımı ise, budur. STDERRKesin komut tarafından verilen yardım mesajının tesadüfünü kullanır.

ping6

314 karakter uzunluğundadır (en azından Ubuntu 13.10'da iputils-121221). EDIT: Bunun beklediğimden daha az taşınabilir olduğunu takdir ediyorum ...

m=`ping6|&wc -c`
false
o=$?
echo ${m:0:o}.${m:o:2}

İlk satır, yardım mesajının karakter uzunluğunu alır ve değişkende saklar.

Diğer cevaplarımda olduğu gibi, bir sonraki birkaç satır da çıkış sayısını alarak 1 sayısını elde ediyor false(çok taşınabilir değil ama sonuçta bu !), Daha sonra son satırda bir ondalık sayı girmek için bu değeri kullanın.

Çıktı: 3.14


Siz efendim, sen bir dahisin
Joshua

1
Ahh, Ubuntu 12.04'te "2.81" (iputils-101006). +1 hepsi aynı ;-)
Dijital Travma

@DigitalTrauma göre info ping6ben iputils-121221

Ayrıca chmod, bu soruya cevap verme cevabını codegolf.stackexchange.com/a/25724/16402 adresinde de inceleyin

2
daha kısa:ping6|&wc -c|sed 's/./&./'
malkaroee

11

Bash + TeX 28 bayt

TeX kurulu ise:

tex -v|head -c8|cut -d\  -f2

TeX'in sürüm numarası, yazılım geliştikçe asimptotik olarak pi'ye yaklaşır. Böylece, zaman geçtikçe, bu (uygun olmayan) uygulamayı daha fazla basamak yazdırmak için kullanabilirsiniz!

tex -v|cut -d\  -f2 | head -n1

Bu, 2011 yılında 3.1415926'ya ulaştı; Ocak 2014 itibariyle, 3.14159265 yazdıracak.


Bunu seviyorum!
gniourf_gniourf

tex -v|grep -oP '.\..\d'4 bayt kaydetmek için kullanabilirsiniz . (Regex, DigitalTrauma'nın cevabından çalındı .) Neyse, + 1 çünkü aynı cevabı düşündüm.
ace_HongKongIndependence

10

JavaScript, 20 bayt

'...'.length+'.'+0xe

Sonuç doğrudan yazdırılacak şekilde konsolda kullanın. Aksi takdirde, alert(...)7 karakter daha ekleyecektir.

Diğer cevabımla aynı şekilde, JS’de çok daha kısa olduğunu fark ettim.

0xe14 için kullanma fikri OP'nin nazik izniyle OP'nin sunulmasından alınmıştır.


1
Para

1
Alternatif 20 byte çözüm:(x='.'+0xE).length+x
nderscore,

@nderscore bu oldukça temiz bir fikir. Bunu başka bir cevap olarak gönderirseniz, benim oyum olacak;)
Martin Ender

10

GNU tarihi, 17 bayt

date -d2/5 +%u.%y

Bu sadece bu yıl çalışacağı garantisini veriyor, ancak bu konuda kurallarda herhangi bir sınırlama görmüyorum ;-)

Bu +basitçe, datearitmetik bir ekleme için belirtilen formatın başlangıcını belirtir ve değildir. -Giriş tarihini gösteren ile aynı .

Çıktı:

$ date -d2/5 +%u.%y
3.14
$

only guaranteed to work this yearIt's fine .. :)
kukac67

10

Bash, 17 bayt

tr 0 .<<<$[62#MC]

Kısa çizgi, 41 bayt

perl -pechomp,s/./$./<<$


..










.

Bash, eksik bitiş işaretçisinden yüksek sesle Şikayet etmez, Dash ise bu yüzden hata mesajı olmayan bir Bash çözümü için iki bayt daha gerekir.
Dennis,

+ 1 de. Sanırım @ TheDoctor yükseltme düğmesine tıklamayı unuttu?
Dijital Travma

@DigitalTrauma ayy ... Sabit
TheDoctor

7

Bash 23 22

seq 2 .02 5|sed -n 58p

Kabuk (tarih genişlemesi olmadan) 20

seq 2 .02 5|sed 58!d

seq 2 .06 5|sed -n 20pOP'nin Mathematica cevabında verilen şekilde de çalışır.
user80551

sed 58!dbiraz daha kısa.
Dennis,

@Dennis Garip, gnome-terminal yerine !dsahip dpkg ...olan O ile başladı ran son komutu oldu d. İyi çalışıyor kshama zshdiyor zsh: event not found: dki bu kesinlikle bir şeyin yerine geçiyor.
user80551

Bash'in tarihinin genişlemesi yüzünden . Komut dosyaları için varsayılan olarak devre dışıdır, bu nedenle aynı komutu kaydettiğinizdepi.sh çalıştırırsanız düzgün bash pi.shçalışacaktır.
Dennis,

6

Python, 39 veya 28 47 veya 34

(Çok fazla golf oynadığınız için teşekkürler Score_Under)

print"%s.%s%c"%(len('aaa'),len('a'),52)

+ işte dize birleştirme işleci, ekleme değil.

0xeHile OP'den kopyalanıyor , işte @psal yardımıyla 28 karakter

print('%X.%s'%(675,0xE))[2:]

Eski versiyonlar:

print str(len('aaa'))+'.'+str(len('a'))+chr(52)

print str(len('aaa'))+'.'+str(0xe)

print"%s.%s"%(len('aaa'),0xe)

İkincisi, baskıdan sonra boşluk bırakılarak ve str () yerine "% s" formatı kullanılarak kısaltılabilir. cf print"%s.%s"%(len('aaa'),0xe)29 byte'ta. Aynısını ilki ile de yapabilirsiniz: print"%s.%s%c"%(len('aaa'),len('a'),52)39 byte'da.
Score_Under

@Score_Under Ah, %shala kullanarak gerektiren düşündüm str. İpucu için teşekkürler :)
ace_HongKongIndependence

1
başka bir 29 baytlık çözüm:print('%s,%s'%(0xE9,0xE))[2:]
soğan,

1
... ve 28 print('%X.%s'%(675,0xE))[2:]
baytta

5

GolfScript, 8 bayt

'??.'(\(

Bu program yazdırılamayan ASCII karakterleri içerir, bu nedenle doğrudan buraya yapıştırılamaz. Bunun yerine, yukarıdaki koddaki soru işaretleri bayt ile değiştirilmelidir 03ve0E onaltılık .

Kolaylık sağlamak için, işte gerçek programın altıgen bir dökümü. Unix / Linux kullanıcıları xxd -r, programı yeniden yapılandırmak için bu onaltılı dökümü çalıştırabilir :

0000000: 2703 0e2e 2728 5c28                      '...'(\(

Açıklama:

  • Programın ilk beş baytı, ASCII 3, 14 ve 46 kodları ile üç karakteri kodlayan tek tırnaklı bir string değişmezi oluşturur (= ASCII periyodu).

  • (dizedeki ilk karakteri keser ve ASCII kodunu (3) yığına iter. \üstteki iki öğeyi yığında değiştirir, dizeyi en üste geri (çeker ve ikincisi diziden başka bir karakter keser ve yine ASCII kodunu (14) yığın üzerinde iter.

Program sonunda, yığın (boş giriş dizesi hariç) bu nedenle şöyle görünür:

3 "." 14

Programın sonunda, GolfScript yorumlayıcısının varsayılan davranışı, yığındaki her şeyi dizmek ve yazdırmak ve istenen çıktıyı elde etmektir.


1
Tuttur! Ben de aynı fikirde bulundum , sadece 12 saat gecikti. Sanırım göndermeden önce 2. sayfayı okumalıyım ... Oh, iyi, geri, size +1.
Dennis,

5

bash - 39

Hepimiz Pi'nin ilk birkaç rakamının aşağıdaki ifadeden hesaplanabileceğini biliyoruz:

Büyük bir kapta kahve alabilir miyim

Sadece 2 ondalık basamağa ihtiyacımız var, değil mi?

m=May
i=I
h=have
echo ${#m}.${#i}${#h}

4

Mathematica - 78

DateList["March"<>ToString@FromDigits@"E"]~DateString~{"MonthShort",".","Day"}

Pi Günü ruhu içinde! : D
kukac67

4

Perl, 15 20 bayt

print 05706=~s/0/./r
print 0xbc6=~s/0/./r

PI__ Pi ile ilgili sürekli bir şey değil mi?
Llamageddon

Bu bir sabit değil. XOR-ed olmak iki dizedir.
nderscore

Bitsel operatörlere izin verilmiyor.
kukac67

Oh, değiller. İşte benim varsayımsal çözümüm. Bununla birlikte, eğer bitsel operatörlere izin verilmiyorsa, uzunluğu uzun olan karakterlerden başka yapılacak çok şey var mı?
Llamageddon

Farklı bazlarda sayıları kullanan birkaç cevap vardır.
kukac67

4

tr + Bash, 17 bayt

tr a-j 0-9<<<d.be

- karakterler aritmetik çıkarma operatörleri değildir. Menzili gösterirler.

Çıktı:

$ tr a-j 0-9<<<d.be
3.14
$

Zekice, karakter çevirisi gerçekten de aritmetik olarak gizli.
Pierre Arlaud

@ArlaudPierre Doğru, buradaki hemen hemen tüm çözümlerin bir şekilde veya başka bir şekilde gizli aritmetik olduğunu iddia ediyorum. Bu cevapların herhangi biri için uygulanan gerçek makine talimatlarına bakarsanız, hepsinin , soru tarafından açıkça kullanılmasının yasaklandığı bazı bit ya da aritmetik talimatların olduğunu düşünüyorum .
Dijital Travma

@ArlaudPierre Soru "3.14" dizesinin çıktısını almasını gerektiriyor. Dil ne olursa olsun, kaputun altında bir yerde, bu bir write()aramaya veya benzerine dönüşür. Başka yerde bulunmuyorsa, doğru sayıda bayt yazılmasını sağlamak için kapakların altında bir miktar aritmetik bulunmalıdır. Bence sorunun amacı gerekli aritmetik / bitsel hesaplamaları gizlemektir.
Dijital Travma

4

BASH, 57

Bu, çoğu cevaptan daha uzundur, ancak denemede kötü bir şey yoktur.

f=`echo aaaaaaaaaaaaa|wc -c`;e=`echo aa|wc -c`;echo $e.$f

verir

3.14

3
Herkesin cevaplarını tekrar değerlendirdiğim için üzgünüm: P, Bulduğum aynı damarda:c=wc\ -c;echo `$c<<<..`.`$c<<<''``$c<<<...`
Score_Under


3

JavaScript - 23 bayt

atob('Mw')+atob('LjE0')

Nderscore için teşekkürler (yorumlarına bakınız)!


Nice: DI bunun hakkında hiçbir şey bilmiyordu bile
kukac67

İçerdiği 4); gerçi
nderscore

@nderscore Ah! Haklısın! Bir şekilde btoa()almak için çalışır 3.14mıydın?
kukac67

@ kukac67 base64 karakter kümesi bir dönem içermiyor :(
nderscore

3
23 bayt "yasal" versiyon: atob('Mw')+atob('LjE0')ve 14 bayt "yasadışı" versiyon:atob("My4xNA")
nderscore

3

C #

 ((int)'ĺ').ToString("#\\.##");

character karakter 314'tür, önceden tanımlanmış bir değişken veya sabit değildir. .ToString çıktıyı bir sayıya, noktaya ve sonra 2 basamağa biçimlendirir.


Güzel, ama şu anda çıktı vermiyor ve derlenemez.
Rudi Kershaw

Console.Write (((int) 'L') .ToString (). "# \\ ##.");
Grax32

3

GolfScript, 13 10

{xy}.*'.'\

Geliştirilmiş versiyonu için Ilmari Karonen'e teşekkürler !

xve yyazdırılamaz karakterlerdir ( daha fazla bilgi için sırasıyla http://www.asciitable.com/ adresine bakınız ).ETX veSO bunlar 3 ve 14'e göre kod çözülür.

Bu kodun ne yaptığı oldukça açık olmalı.

Not: Aşağıdaki kural

You may not use any predefined variables/constants that your language may have as a replacement for 3, 1, and 4. (Author's discretion)

ASCII karakterleri ne değişken ne de sabit olmadığından bozuk değildir.


The digits 3, 1, and 4 may not appear anywhere in your code.,Your program cannot require input of any kind (besides running it).
user80551

Rakamlar hiçbir yerde görünmez. Giriş yok.
Vereos

Ve son kodun ...?
user80551

{}.*.{}.*, ve parantezlerin içinde sırasıyla basılabilir 2 karakter vardır ( asciitable.com ) ETXveSO
Vereos

2
Bunu {xy}.*'.'\ (10 karakter) kısaltabilirsiniz . Benimki yine de daha kısa. ;-) Fakat +1'i bana { }.*(ve { }.%) öğrettiğim için , bu numarayı aklımda tutmalıyım.
Ilmari Karonen

3

Sitede yeni ve henüz yorum yazamıyorum, bu yüzden buraya yazıyorum. Sadece bu Javascript çözümünü merak ediyorum:

'...'.length+'.'+0xe

ve bu kural:

Çıktırabileceğiniz tek şey 3.14, daha uzun / daha büyük çıktıların bir parçası olamaz.

Bu kodu tarayıcı konsolumda çalıştırdığımda, şunu alıyorum:

"3.14"

veya komut satırında Düğüm kullanarak:

'3.14'

ama bu kodu çalıştırırsam:

parseFloat('...'.length+'.'+0xe)

Alırım:

3.14

Bir .js dosyasını çalıştırmak için Node.js kullanarak şunu yazabilirim:

console.log('...'.length+'.'+0xe)

ve Al:

3.14

1
Elde edilen değerin ne tür olabileceği konusunda hiçbir zaman bir sınırlama olmadı. Yani, dize veya sayı önemli değil. Dizenin etrafındaki tırnaklar çıktının bir parçası olarak kabul edilmez.
nderscore

CodeGolf ve Programming Puzzles @ RobertMunn'a Hoşgeldiniz! Bu cevap tüm kurallara uyduğu için geçerlidir ... consoleOnları görüntülerken tırnakları dizme eğiliminde olduğunu aklınızda bulundurun ... Kullandığınız +ancak aritmetik olarak değil, birleştirici olarak kullanılıyor, bu yüzden geçerli ... Bunu kullanarak kullanmak alertdaha küçük olabilirdi console.log... Ama başka türlü, büyük çaba. Umarız burada
beğenirsiniz

Bu çok hoş! Dil ve bayt sayısı adını eklemeyi düşünmelisiniz (örneğin Javascript, 20)
Vereos

1
Sağol Ace, sadece kuralları öğreniyorum. Bir yorum bırakamadım, bu yüzden ayrı ayrı yayınlandım, sanırım bu daha çok, ndercore ve WallyWest'in benim için açıklığa kavuşturduğu kurallar üzerine bir açıklama olduğunu açıkladı. Herkesin bir yenisiyle olan sabrını takdir ediyorum.
Robert Munn

2

Mathematica, 56 bayt

(l=ToString@StringLength@#&)@"..."<>"."<>l@"."<>l@"...."

Söylenecek çok fazla bir şey yok. Basamakları dize uzunlukları olarak üretiyorum ve birleştiriyorum.

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.