Output Pi senza matematica [chiuso]


56

Nel minor numero di byte possibile, il tuo compito è scrivere un programma che produca:

3.14

Per celebrare un tardo Pi, ovviamente! :)

Regole

Puoi farlo come preferisci, ma ci sono alcune restrizioni.

  • Si può non usare operazioni aritmetiche qualsiasi punto del programma. Questo include +, -, *, /, %, ^(esponenziale), ecc ... Questo include anche l'incremento (solitamente ++), decrementando ( --), operazioni bit per bit e ogni costruito in funzioni che può essere usato come una sostituzione come sum(), prod(), mod(), double(), pow(), sqrt(), inc(), dec()ecc. (discrezione dell'autore)
  • Le cifre 3, 1e 4potrebbero non apparire ovunque nel codice.
  • Si può non usare alcun predefiniti variabili / costanti che la lingua può avere in sostituzione 3, 1e 4. (A discrezione dell'autore)
  • Si può anche non utilizzare le funzioni trigonometriche, come sin(), cos(), tan(), arcsin(), arccos(), arctan(), sinh(), cosh(), tanh(), ecc ... (discrezione dell'autore)
  • Si può non utilizzare valori incorporati o predefiniti di Pi (o 3.14). Nessuna richiesta web .
  • Il tuo programma non può richiedere input di alcun tipo (oltre a eseguirlo).
  • 3.14è l' unica cosa che potresti produrre, non può far parte di un output più lungo / più grande.

Vincitore

Vince la risposta con il minor numero di byte il 18 aprile . In bocca al lupo!

In attesa di risposte intelligenti da menti intelligenti! Malbolgere qualcuno? : P


3
Potresti voler chiarire che ^è l'operatore esponenziale, non l'operatore XOR bit a bit.
ace_HongKongIndipendenza

2
Sono ammessi operatori bit per bit?
Programma FOX

1
@ProgramFOX Bene, possono essere usati in sostituzione delle normali operazioni, quindi no. Non autorizzato. Modifica il post.
kukac67,

1
Richieste Web consentite?
Swish,

7
@swish: Non userei le richieste web, perché appartiene all'elenco delle "scappatoie" standard che non sono più divertenti
ProgramFOX

Risposte:


25

CJam - 8 6

S`,'.E

CJam è un nuovo linguaggio che sto sviluppando, simile a GolfScript - http://sf.net/p/cjam .
Ecco la spiegazione:

Sè una variabile preinizializzata nello spazio ("")
`genera la rappresentazione in stringa dell'ultimo valore - che è esattamente " "(3 caratteri)
,calcola la lunghezza della stringa (3)
'.è il carattere punto
Eè una variabile preinizializzata in 14; 3, 1 e 4 non sono ammessi ma non dice nulla su 14 :)

Ringraziamenti a Doorknob per l'idea di backtick


1
@Brilliand Accetterei l'uso di E.
kukac67,

6
@ kukac67 Anche se non ho ancora pubblicato ufficialmente (in arrivo oggi), ho già reso disponibile l'attuale codice CJam tramite hg. Se ricevi il codice CJam a partire da 1 giorno prima della pubblicazione della domanda, verrà eseguito correttamente il mio programma (quindi non ho apportato modifiche per risolvere questo problema). Ma non mi dispiacerà comunque.
aditsu,

33
tempo di sviluppare HQ9 + π ...
Nzall

2
@AnonymousPi Tutti sono liberi di votare le risposte che scelgono. Forse sono più colpiti dalle altre risposte anche se non sono così brevi.
aditsu,

2
Perché hai una variabile preinizializzata su 14?
user2357112

113

PHP - 22 byte

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

Il Pi Day dell'anno 1998 è stato davvero fantastico!


13
@ kukac67: n.jè il formato ed 8899e5è il timestamp Unix del 14 marzo 1998.
ProgramFOX

7
È così intelligente.
Amal Murali,

7
È possibile salvare 7 caratteri rimuovendoli ,8899e5. Sarà corretto una volta all'anno.
Damir Kasipovic,

1
@Timo Hai ragione, ma contiene la cifra illegale "3";).
Blackhole,

18
@Blackhole 20 byte: <?=date('w.W',78e5);1 aprile 1970 era un mercoledì della settimana 14.
primo

92

C, 39

Suppone che la macchina sia little-endian e utilizzi lo standard IEEE in virgola mobile.

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

Il fatto divertente è che in "P@I@"realtà non è correlato PIma è equivalente a 0x40494050quale è la rappresentazione3.144550323486328

http://ideone.com/uXVEtl


3
È davvero fantastico.
wchargin,

1
Il tuo codice presuppone la punzonatura di tipo su una macchina little-endian.
Nayuki,

@NayukiMinase, sì, hai ragione, vale la pena segnalarlo. E presuppone anche l'uso dello standard IEEE in virgola mobile.
Michael M.,

E contiene un comportamento indefinito (dichiarazione implicita della funzione variadica)
rubenvb,

5
Questo codice in realtà presuppone che la macchina sia la macchina di Michael :-).
Konrad Borowski,

50

dc , 11 9 byte

zE[.]znPp
  • z Spingere la profondità della pila corrente (0) sulla pila
  • EPush E 16 (== 14 10 )
  • [.] Spingere la stringa "."
  • z Spingere la profondità della pila corrente (3) sulla pila
  • n Pop 3 e stampa come numero
  • PPop "." e stampa come carattere
  • p Pop 14 e stampa come numero con newline

Produzione:

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

Quindi "usa input base" è un operatore? Sembra un po 'come un'operazione aritmetica, ma probabilmente è ancora valida.
Brilliand,

@Brilliand Non c'è niente che vedo nella domanda che vieta le conversioni di base. In effetti l'OP sembra incoraggiare le conversioni di base in un commento qui codegolf.stackexchange.com/a/25681/11259
Digital Trauma

Sono d'accordo che sia valido; Sto solo pensando che quando la conversione di base è un operatore piuttosto che parte della sintassi numerica, confonde la linea tra i dati incorporati e un'operazione aritmetica.
Brilliand,

Penso che questo dovrebbe essere di 15 byte?
Utente registrato

9
@AdityaPatil Perché? dcè una lingua e un interprete, proprio come tutte le altre lingue qui. dc -e è solo l'invocazione di quell'interprete. Avrei potuto facilmente salvare il programma a 9 byte in un file ed eseguire dc pi.dc. Se è necessario contare questi byte, lo stesso dovrebbe valere per tutte le altre lingue. ad esempio includere python in tutte le voci di Python o ruby golfscript.rb in tutte le voci di golfscript. Credo che la convenzione concordata qui non includa questi, a meno che non siano necessarie opzioni speciali.
Trauma digitale

42

JavaScript ( ES5 ) 20 byte

Una variante della soluzione JS di m.buettner.

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

Modifica: JavaScript ( ES5 ) 18 byte

Una variante dell'idea di ComFreek di utilizzare la funzione di decodifica base64.

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

Modifica: Javascript ( ES5 ) 16 byte

Se l' +operatore unario è autorizzato a trasmettere una stringa a un numero, può essere ridotto a:

+atob('MDMuMTQ')

WOW! È davvero intelligente!
kukac67,

9
@NateEldredge Questa è concatenazione di stringhe, non aritmetica.
tomsmeding,

è +accettato l'uso qui?
phuclv,

1
Trovo che la soluzione Javascript sia la più elegante e stavo per pubblicare la mia fino a quando ho notato che aveva un '4': atob ('My4xNA =='), lol.
rdev5,

1
@Dennis hai ragione, è ancora lì. È anche lì se copio + incolla il risultato dalla console. Non ne sono contento, quindi tornerò alla soluzione a 16 byte.
nderscore

39

Haskell, 41 byte

Quando è il giorno più in Australia?

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

Modificato per aggiungere: come l'altra risposta di Haskell, che genera una stringa, quindi ha le virgolette. Puoi segnare 33 e rispettare rigorosamente le regole, ma è meno divertente:

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

Ahah, wow. Questo è buono!
Ry,

Puoi spiegare perché funziona?
yhager

5
Mi piace molto questo, +1. Ma penso che tecnicamente ".." stia invocando l'operatore di incremento, il che era proibito. (In realtà il upvoting invoca anche un'operazione di incremento, quindi dovrebbe essere proibito anche ;-)
Marc van Leeuwen

In realtà ci ho pensato - ho avuto una risposta ancora più breve: p=[2.9,2.92..]!!([0,6..]!!2)... e in questo ..sembra sbagliato. Ma Haskell è fortemente tipizzato, e l'incremento della risposta che ho dato Charnon Numè e non è aritmetica, la cosa che è effettivamente vietata. Avrei bisogno di un fromEnumper convertire i caratteri in numeri per usarli in quel modo. Comunque, la mia coscienza è chiara :)
bazzargh,

6
@yhager: ['.' ..] è la sequenza di caratteri "./0123456 ..." (ecc.). (a: n: y: t: i: m: e: _) è una corrispondenza di pattern che estrae i primi 7 caratteri, [m, a, t, e] ne riordina 4 in "3.14". Sapendo che questo è ciò che vuoi fare, è una questione di ricerca nel dizionario per trovare parole con la struttura giusta. Cosa che ho fatto ... ad esempio, un'altra coppia era "il vestito più brutto". Poi ti viene in mente uno scherzo :)
bazzargh,

32

Codice Morse, 33 byte

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

Tecnicamente parlando, l'informazione richiede solo 21 byte.


11
Abbiamo sicuramente bisogno di più soluzioni golf nel codice morse qui ...
cessò di girare in senso antiorario l'

26
Tecnicamente parlando, direi 21 bit , non byte
Michael M.

14
@Michael poiché il codice Morse può essere un punto, un trattino o uno spazio, non richiederebbe più di 1 bit per memorizzare 1 operazione?
smcg,

5
@smcg ButSpacesAreForWeakPeopleWhoCan'tReadThingsLikeThisThis
Cole Johnson

8
Per quanto mi piaccia il codice morse (e quindi questa soluzione) - ma non è contro la regola 3: "Non puoi usare nessuna variabile / costante predefinita che la tua lingua potrebbe avere in sostituzione di 3, 1 e 4." o anche la regola 2: "Le cifre 3, 1 e 4 potrebbero non apparire in nessun punto del codice."?
Kratenko,

27

J - 15 11 10 caratteri

Reso più breve, usando il fantastico i:.

6{i:6.28j8

Ha spiegato:

  • 6.28j8 - Il numero complesso 6.28 + 8i.
  • i:- Qui è dove avviene la magia. i:su un numero complesso A + Bi, B ≠ 0 prende B + 1 punti equidistanti dall'intervallo [-A, A].
  • 6{ - Prendi l'elemento all'indice 6, che è 3.14.

In precedenza, abbiamo avuto le seguenti assurdità:

|.'.'2}":22b8d5

Spiegato dall'esplosione:

         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'

Invece di |.'.'2}":22b8d5, puoi salvare 2 caratteri selezionando un numero che non richiede inversione:'.'1}":16bbc6
rationalis

3
@epicwisdom Le cifre 3, 1 e 4 sono vietate. Devo usare un numero nel modulo 41X3perché mi è permesso solo modificare i caratteri agli indici 0 e 2.
algoritmo di

20

Riga di comando Linux, 35 byte

Questo da nessuna parte è vicino a vincere, ma qui è per divertimento:

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

Uscita (dopo 2 secondi):

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

Citazione dalla domanda: "Nessuna richiesta Web".
Maniglia della porta

9
@Doorknob ICMP request echo! = Richiesta web. Indipendentemente da ciò, il ping è al 4.6.3.14, dal quale non ricevo risposta, quindi non è come se avessi di nuovo informazioni utili da Internet
Digital Trauma

10
@Doorknob Ma se questo ti dà ancora fastidio, possiamo farlo :;ping -t${#?} -qc2 67502862|grep -oP '.\..\d'. Questo imposta il TTL su 1, quindi l'eco ICMP in uscita viene rilasciata dal router prima che arrivi mai vicino a Internet
Digital Trauma

1
Puoi salvare 9 s usando ping -w2 67502862. (Ninja modifica perché prima di consigliare w1, ho quasi infranto le regole.)
Solitario

@lolesque Grazie. Tuttavia, non migliora il punteggio del golf ;-)
Digital Trauma

16

GolfScript, 18 13 12

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

Vecchia versione:

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

È molto artistico, solo 3 personaggi unici! ;)

Come funziona:

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

Ecco una spiegazione della versione a 12 caratteri (molto più interessante, IMO):

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

Funziona perché n`,è 4, poiché n`è '"\n"'. Stessa logica per '.'`,. Inoltre scambia invece di creare una nuova stringa per salvare un carattere (grazie @algorithmshark).

Versione alternativa:

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

o

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

O qualsiasi cosa in quelle corde, davvero. : P


Solo 3 personaggi diversi, figo :)
aditsu,

Funzionerebbe '.'.`,\.,n`,per salvare un personaggio? Riutilizzare '.'duplicando e scambiando.
algoritmo

@algorithmshark Sì, grazie!
Maniglia della porta

Questo è molto intelligente! +1
VisioN

questo fa apparire come la versione del codice morse
pwned

14

La risposta dell'OP.

Mathematica, 21 20 18

Sembra economico ...

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

o

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

Capito come farlo 18:

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

Haskell, 49 48 12

(48 include il nuovo carattere di riga)

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

Eseguilo chiamando la rfunzione.

Utilizzando il metodo come con Mathematica sopra, è possibile digitare questo in GHCi:

[-2.86..]!!6

Java, 87 86

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

Scala, 27

Tradotto da Java come suggerito da Score_Under . (Non conosco davvero Scala)

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

Oh, 0xeè intelligente. Ti dispiace se migliorerò la mia risposta JS con quello? ;)
Martin Ender,

La maggior parte di java può essere convertita direttamente in scala, che di solito è più breve se si vuole davvero risparmiare sui byte - se lo si utilizza come script, l'intera cosa è semplicemente: print ("tri" .length + "." + 0xe)
Score_Under

Sì, ho pensato alla stessa cosa, che è più breve in Julia rispetto [-.86:5][5]a 11, ma ho pensato che non contava poiché i range sono solo matematica.
gggg

12

Bash, 50

I messaggi di aiuto / errore non sono risorse esterne, sono l'output di un comando!

Se qualcosa è abuso di regole, questo è tutto. Utilizza la coincidenza a cui è stato inviato il messaggio di aiuto STDERRdal comando esatto

ping6

è lungo 314 caratteri (almeno su Ubuntu 13.10 con iputils-121221). EDIT: apprezzo che sia molto meno portatile di quanto mi aspettassi ...

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

La prima riga prende la lunghezza del carattere del messaggio di aiuto e lo memorizza in una variabile.

Come nelle mie altre risposte, le prossime righe ottengono il numero 1 prendendo lo stato di uscita di false(non molto portatile ma dopo tutto è !), Quindi utilizzare quel valore per inserire un punto decimale nell'ultima riga

Produzione: 3.14


signore, siete un genio
Giosuè,

1
Uh oh, "2,81" su Ubuntu 12.04 (iputils-101006). +1 lo stesso ;-)
Digital Trauma

@DigitalTrauma secondo info ping6I have iputils-121221

controlla anche la mia chmodrisposta accesa a questa domanda su codegolf.stackexchange.com/a/25724/16402

2
ancora più breve:ping6|&wc -c|sed 's/./&./'
Malkaroee,

11

Bash + TeX 28 byte

Se hai installato TeX:

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

Il numero di versione di TeX si avvicina asintoticamente al miglioramento del software. Quindi, col passare del tempo, è possibile utilizzare questa implementazione (non conforme) per stampare sempre più cifre!

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

Questo ha stampato 3.1415926 nel 2011; a partire da gennaio 2014, verrà stampato 3.14159265.


Io amo questo!
gniourf_gniourf,

È possibile utilizzare tex -v|grep -oP '.\..\d'per salvare 4 byte. (Regex rubato dalla risposta di DigitalTrauma .) Comunque, +1 perché pensavo solo alla stessa risposta.
ace_HongKongIndipendenza

10

JavaScript, 20 byte

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

Usalo in una console, in modo che il risultato sia stampato direttamente. Altrimenti, alert(...)aggiungerà altri 7 caratteri.

Come la mia altra risposta, ho appena notato che è molto più breve in JS.

L'idea di usare 0xeper 14 è presa dalla presentazione del PO con il gentile permesso del PO.


1
Va

1
Soluzione alternativa a 20 byte:(x='.'+0xE).length+x
nderscore

@nderscore è un'idea abbastanza carina. Se la pubblichi come un'altra risposta, otterrai il mio voto;)
Martin Ender,

10

Data GNU, 17 byte

date -d2/5 +%u.%y

Questo ha garantito il funzionamento solo quest'anno, ma non vedo alcuna limitazione nelle regole al riguardo ;-)

Il +è semplicemente indica l'inizio del formato, per datee non è un'aggiunta aritmetica. Lo stesso vale per l' -indicazione della data di inserimento.

Produzione:

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

only guaranteed to work this yearVa bene .. :)
kukac67

10

Bash, 17 byte

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

Dash, 41 byte

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


..










.

Bash si lamenterebbe ad alta voce del marcatore finale mancante mentre Dash non lo fa, quindi una soluzione Bash senza messaggi di errore richiederebbe due byte extra.
Dennis,

+1 pure. Immagino che @TheDoctor abbia dimenticato di fare clic sul pulsante di votazione?
Trauma digitale

@DigitalTrauma oops ... fixed
TheDoctor

7

Bash 23 22

seq 2 .02 5|sed -n 58p

Shell (senza espansione della cronologia) 20

seq 2 .02 5|sed 58!d

seq 2 .06 5|sed -n 20pfunziona anche come indicato nella risposta Mathematica di OP.
user80551

sed 58!dè leggermente più corto.
Dennis,

@Dennis Weird, sostituti di gnome-terminal !dcon il dpkg ...quale è stato l'ultimo comando con cui ho eseguito che è iniziato d. Funziona bene kshma zshdice zsh: event not found: dche è sicuramente sostituito per qualcosa.
user80551

Questo a causa dell'espansione della storia di Bash . È disabilitato per impostazione predefinita per gli script, quindi se salvi lo stesso comando pi.shed eseguilo bash pi.sh, funzionerà bene.
Dennis,

6

Python, 39 o 28 47 o 34

(Grazie Score_Under per averlo giocato così tanto)

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

+ ecco l'operatore di concatenazione delle stringhe, non l'aggiunta.

Copiando il 0xetrucco dall'OP, ecco 28 caratteri con l'aiuto di @psal

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

Vecchie versioni:

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

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

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

Il secondo può essere abbreviato rimuovendo lo spazio dopo la stampa e utilizzando un formato "% s" anziché str (). cf print"%s.%s"%(len('aaa'),0xe)a 29 byte. Puoi fare lo stesso anche con il primo: print"%s.%s%c"%(len('aaa'),len('a'),52)a 39 byte.
Score_Under

@Score_Under Oh, pensavo che l'utilizzo %srichiedesse ancora str. Grazie per la punta :)
ace_HongKongIndipendenza

1
un'altra soluzione di 29 byte:print('%s,%s'%(0xE9,0xE))[2:]
onionpsy

1
... e in 28 byte:print('%X.%s'%(675,0xE))[2:]
onionpsy,

5

GolfScript, 8 byte

'??.'(\(

Questo programma contiene caratteri ASCII non stampabili, quindi non può essere incollato direttamente qui. Invece, i punti interrogativi nel codice sopra dovrebbero essere sostituiti con i byte 03e 0Ein esadecimali.

Per comodità, ecco un dump esadecimale del programma attuale. Gli utenti Unix / Linux possono eseguire questo dump esadecimale xxd -rper ricostruire il programma:

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

Spiegazione:

  • I primi cinque byte del programma formano una stringa a virgoletta singola che codifica i tre caratteri con i codici ASCII 3, 14 e 46 (= periodo ASCII).

  • (taglia il primo carattere dalla stringa e inserisce il suo codice ASCII (3) nello stack. \scambia i primi due oggetti nello stack, riportando la stringa in alto, e il secondo (taglia un altro carattere dalla stringa, spingendo di nuovo il suo codice ASCII (14) nello stack.

Alla fine del programma, lo stack (esclusa la stringa di input vuota) si presenta così:

3 "." 14

Alla fine del programma, il comportamento predefinito dell'interprete GolfScript è di stringere e stampare tutto nello stack, producendo l'output desiderato.


1
Snap! Ho avuto esattamente la stessa idea , con solo 12 ore di ritardo. Immagino che dovrei leggere la pagina 2 prima di pubblicare ... Oh beh, tornando indietro, +1 a te.
Dennis,

5

bash - 39

Sappiamo tutti che le prime cifre di Pi possono essere calcolate dalla seguente dichiarazione:

Posso avere un grande contenitore di caffè

Abbiamo bisogno solo di 2 decimali, giusto?

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

4

Mathematica - 78

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

Nello spirito di Pi Day! : D
kukac67,

4

Perl, 15 20 byte

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

PI__ non è forse una costante legata a Pi?
Llamageddon,

Non è una costante. Sono due stringhe essendo XOR-ed.
nderscore,

Gli operatori bit a bit non sono ammessi.
kukac67,

Oh, non lo sono. Bene, ecco la mia ipotetica soluzione. Detto questo, se gli operatori bit per bit non sono ammessi, c'è ancora molto altro da fare che contare le lunghezze delle stringhe?
Llamageddon,

Esistono diverse risposte che utilizzano numeri in basi diverse.
kukac67,

4

tr + Bash, 17 byte

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

I -caratteri qui non sono operatori di sottrazione aritmetica. Indicano la portata.

Produzione:

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

Intelligente, sebbene una traduzione del personaggio sia un'aritmetica davvero nascosta.
Pierre Arlaud,

@ArlaudPierre Vero, anche se direi che praticamente tutte le soluzioni qui hanno l'aritmetica nascosta in un modo o nell'altro. Se guardi le istruzioni effettive della macchina eseguite per una di queste risposte, penso che tutte abbiano alcune istruzioni bit per bit o aritmetiche, che sono vietate dall'uso esplicito della domanda.
Trauma digitale

@ArlaudPierre La domanda richiede l'output della stringa "3.14". Indipendentemente dalla lingua, da qualche parte sotto il cofano, questo degenererà in una write()chiamata o simile. Ci sarà necessariamente un po 'di aritmetica sotto le copertine per garantire che sia scritto il numero corretto di byte, se non altrove. Penso che il punto della domanda sia nascondere i calcoli aritmetici / bit per bit necessari.
Trauma digitale

4

BASH, 57

Questo è più lungo della maggior parte delle risposte, ma non c'è niente di male nel provare.

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

3.14

3
Ci scusiamo per il re-golf delle risposte di tutti: P, Nella stessa vena di questo ho trovato:c=wc\ -c;echo `$c<<<..`.`$c<<<''``$c<<<...`
Score_Under

4

C, 36

main(){printf("%d\b.%o\b",' ','`');}

1
Se lo combiniamo con la mia risposta, possiamo risparmiare 2 byte per ottenere un punteggio di 34 :main(){printf("%d\b.%d",' ',0xe);}
vsz

3

JavaScript - 23 byte

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

Grazie a nderscore (vedi i suoi commenti)!


Bello: DI non lo sapeva nemmeno
kukac67,

Contiene 4però;)
nderscore il

@nderscore Ah! Hai ragione! Funzionerebbe btoa()per ottenere in 3.14qualche modo?
kukac67,

@ kukac67 Il set di caratteri base64 non contiene un punto :(
nderscore

3
Versione "legale" a 23 byte: atob('Mw')+atob('LjE0')e versione "illegale" a 14 byte:atob("My4xNA")
nderscore,

3

C #

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

ĺ è il carattere 314, non una variabile o costante predefinita. .ToString formatta l'output in una cifra, un punto e quindi altre 2 cifre.


Bello, ma al momento non viene riprodotto e non è compilabile.
Rudi Kershaw,

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

3

GolfScript, 13 10

{xy}.*'.'\

Grazie a Ilmari Karonen per la versione migliorata!

xe ysono caratteri non stampabili (vedere http://www.asciitable.com/ per ulteriori informazioni), rispettivamente ETXe SO, che decodificano in 3 e 14.

Che cosa fa questo codice dovrebbe essere abbastanza chiaro.

Nota: la seguente regola

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

non è rotto, poiché i caratteri ASCII non sono né variabili né costanti.


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

Le cifre non compaiono da nessuna parte. Non ci sono input.
Vereos,

E il tuo codice finale è ...?
user80551

{}.*.{}.*e all'interno delle parentesi ci sono 2 caratteri non stampabili, rispettivamente ( asciitable.com ) ETXeSO
Vereos

2
Potresti accorciarlo a {xy}.*'.'\ (10 caratteri). Il mio è ancora più corto, però. ;-) Ma +1 per avermi insegnato su { }.*(e { }.%), dovrò tenere a mente quel trucco.
Ilmari Karonen,

3

Nuovo sul sito e non posso ancora scrivere commenti, quindi lo posterò qui. Mi chiedo solo questa soluzione Javascript:

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

e questa regola:

3.14 è l'unica cosa che potresti produrre, non può far parte di un output più lungo / più grande.

Se eseguo questo codice nella mia console del browser, ottengo:

"3.14"

o usando Nodo dalla riga di comando:

'3.14'

ma se eseguo questo codice:

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

Ottengo:

3.14

Utilizzando Node.js per eseguire un file .js, posso scrivere:

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

e prendi:

3.14

1
Non c'è mai stata una limitazione su quale tipo può essere il valore risultante. Quindi, stringa o numero non importa. Le virgolette attorno alla stringa non sono considerate parte dell'output.
nderscore,

Benvenuto in CodeGolf e Puzzle di programmazione @RobertMunn! Questa risposta è valida in quanto obbedisce a tutte le regole ... Ricorda che consoletende a racchiudere le stringhe tra virgolette quando le visualizzi ... Hai usato +ma non aritmeticamente, viene usato come concatenatore, quindi è valido ... Inoltre avresti potuto ridurlo usando alertpiuttosto che console.log... Ma per il resto, un grande sforzo. Speriamo che ti piaccia qui ...
WallyWest,

È molto carino! Dovresti considerare di aggiungere il nome della lingua e il conteggio dei byte (ad es. Javascript, 20)
Vereos

1
Grazie asso, sto solo imparando le regole qui. Non potevo lasciare un commento, quindi ho pubblicato separatamente, suppongo che questo fosse più di un chiarimento sul tipo di post delle regole, che nderscore e WallyWest mi hanno chiarito. Apprezzo la pazienza di tutti con un principiante.
Robert Munn,

2

Mathematica, 56 byte

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

Non c'è molto da dire. Sto generando le cifre come lunghezze di stringa e le concateno.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.