Salida Pi sin matemática [cerrado]


56

En el menor número de bytes posible, su trabajo es escribir un programa que genere:

3.14

¡En celebración de un día de Pi tardío, por supuesto! :)

Reglas

Puede hacerlo de la forma que desee, pero hay algunas restricciones.

  • Es posible que no utilice operaciones aritméticas en cualquier parte de su programa. Esto incluye +, -, *, /, %, ^(exponenciación), etc ... Esto también incluye incrementar (por lo general ++), decremento ( --), operaciones bit a bit , y cualquier construido en funciones que se pueden utilizar como reemplazo tales como sum(), prod(), mod(), double(), pow(), sqrt(), inc(), dec(), etc ... (a discreción del autor)
  • Los dígitos 3, 1y 4pueden no aparecer en ninguna parte de su código.
  • Es posible que no se utilice ningún variables / constantes predefinidas que la lengua puede tener como sustituto de 3, 1y 4. (Discreción del autor)
  • También es posible que no se utilice ningún funciones trigonométricas tales como sin(), cos(), tan(), arcsin(), arccos(), arctan(), sinh(), cosh(), tanh(), etc ... (a discreción del autor)
  • Es posible que no utilice los valores incorporados o predefinido de Pi (o 3.14). No hay solicitudes web .
  • Su programa no puede requerir entrada de ningún tipo (además de ejecutarlo).
  • 3.14es lo único que puede generar, no puede ser parte de una salida más larga / más grande ...

Ganador

La respuesta con la menor cantidad de bytes el 18 de abril gana. ¡Buena suerte!

¡Esperamos respuestas inteligentes de mentes inteligentes! Malbolge a alguien? :PAGS


3
Es posible que desee aclarar que ^es el operador de exponenciación, no el operador XOR bit a bit.
ace_HongKongIndependence

2
¿Se permiten operadores bit a bit?
ProgramFOX

1
@ProgramFOX Bueno, pueden usarse como un reemplazo para las operaciones normales, entonces, no. No permitido. Editaré la publicación.
kukac67

1
Solicitudes web permitidas?
swish

77
@swish: No usaría solicitudes web, porque eso pertenece a la lista de "lagunas" estándar que ya no son divertidas
ProgramFOX

Respuestas:


25

CJam - 8 6

S`,'.E

CJam es un nuevo lenguaje que estoy desarrollando, similar a GolfScript: http://sf.net/p/cjam .
Aquí está la explicación:

Ses una variable preinicializada al espacio ("")
`genera la representación de cadena del último valor, que es exactamente " "(3 caracteres)
,calcula la longitud de la cadena (3) si
'.el carácter de punto
Ees una variable preinicializada a 14; 3, 1 y 4 no están permitidos pero no dice nada sobre 14 :)

Créditos al pomo de la puerta por la idea del backtick


1
@Brilliand Acepto el uso de E.
kukac67

66
@ kukac67 Si bien aún no he realizado un lanzamiento oficial (hoy en día), ya he puesto a disposición el código CJam actual a través de hg. Si obtiene el código CJam a partir de 1 día antes de publicar la pregunta, ejecutará mi programa correctamente (por lo que no he realizado cambios para resolver este problema). Pero realmente no me importará de todos modos.
aditsu

33
hora de desarrollar HQ9 + π ...
Nzall

2
@AnonymousPi Todos son libres de votar por las respuestas que elijan. Tal vez estén más impresionados con otras respuestas, incluso si no son tan cortos.
aditsu

2
¿Por qué tiene una variable preinicializada a 14?
user2357112

113

PHP - 22 bytes

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

¡Pi Day en el año 1998 fue realmente genial!


13
@ kukac67: n.jes el formato, y 8899e5es la marca de tiempo de Unix del 14 de marzo de 1998.
ProgramFOX

77
Eso es muy inteligente.
Amal Murali

77
Puede guardar 7 caracteres eliminando ,8899e5. Será correcto una vez al año.
Damir Kasipovic

1
@Timo Tienes razón, pero contiene el dígito ilegal "3";).
Blackhole

18
@Blackhole 20 bytes: <?=date('w.W',78e5);el 1 de abril de 1970 fue un miércoles en la semana 14.
primo

92

C, 39

Asume que la máquina es little-endian y usa el estándar de coma flotante IEEE.

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

El hecho divertido es que en "P@I@"realidad no está relacionado PIpero es equivalente a 0x40494050cuál es la representación de3.144550323486328

http://ideone.com/uXVEtl


3
Eso es bastante asombroso.
wchargin

1
Su código asume la escritura de tipo en una máquina little-endian.
Nayuki

@NayukiMinase, sí, tienes razón, vale la pena señalarlo. Y también supone el uso del estándar de punto flotante IEEE.
Michael M.

Y contiene un comportamiento indefinido (declaración implícita de función variable)
rubenvb

55
Este código en realidad supone que la máquina es la máquina de Michael :-).
Konrad Borowski

50

cc , 11 9 bytes

zE[.]znPp
  • z Empuje la profundidad de la pila actual (0) sobre la pila
  • EEmpuje E 16 (== 14 10 )
  • [.] Empuje la cuerda "."
  • z Empuje la profundidad actual de la pila (3) sobre la pila
  • n Pop 3 e imprimir como número
  • PPop "." e imprimir como char
  • p Pop 14 e imprima como número con nueva línea

Salida:

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

¿Entonces "usar base de entrada" es un operador? Huele como una operación aritmética, pero probablemente todavía sea válida.
Brilliand

@Brilliand No hay nada que vea en la pregunta que prohíba las conversiones de base. De hecho, el OP parece alentar las conversiones de bases en un comentario aquí codegolf.stackexchange.com/a/25681/11259
Digital Trauma

Estoy de acuerdo en que es válido; Solo estoy pensando que cuando la conversión base es un operador en lugar de parte de la sintaxis numérica, difumina la línea entre los datos en línea y una operación aritmética.
Brilliand

Creo que esto debería ser de 15 bytes?
Usuario registrado

99
@AdityaPatil ¿Por qué? dces un idioma e intérprete, al igual que todos los demás idiomas aquí. dc -e es solo la invocación de ese intérprete. Podría haber guardado con la misma facilidad el programa de 9 bytes en un archivo y ejecutarlo dc pi.dc. Si es necesario contar estos bytes, lo mismo debería aplicarse a todos los demás idiomas. por ejemplo, incluir python en todas las entradas de Python o ruby golfscript.rb en todas las entradas de golfscript. Creo que la convención acordada aquí no incluye estos, a menos que se deban aprobar opciones especiales.
Trauma digital

42

JavaScript ( ES5 ) 20 bytes

Una variación de la solución JS de m.buettner.

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

Editar: JavaScript ( ES5 ) 18 bytes

Una variación de la idea de ComFreek de usar la función de decodificación base64.

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

Editar: Javascript ( ES5 ) 16 bytes

Si el +operador unario puede lanzar una cadena a un número, se puede reducir a:

+atob('MDMuMTQ')

¡GUAUU! ¡Eso es realmente inteligente!
kukac67

99
@NateEldredge Esto es concatenación de cadenas, no aritmética.
tomsmeding

¿Se +acepta el uso de aquí?
phuclv

1
Creo que la solución Javascript es la más elegante y estaba a punto de publicar la mía hasta que noté que tenía un '4': atob ('My4xNA =='), jajaja.
rdev5

1
@ Dennis tienes razón, todavía está allí. Incluso está allí si copio + pego el resultado de la consola. No estoy contento con él, así que volveré a la solución de 16 bytes.
nderscore

39

Haskell, 41 bytes

¿Cuándo es el día pi en Australia?

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

Editado para agregar: como la otra respuesta de Haskell, que genera una cadena, también tiene comillas. Puedes anotar 33 y estar estrictamente dentro de las reglas, pero es menos divertido:

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

Jaja, guau. ¡Esto es bueno!
Ry-

¿Puedes explicar por qué esto funciona?
yhager

55
Este me gusta mucho, +1. Pero creo que técnicamente "..." está invocando el operador de incremento, que estaba prohibido. (En realidad, la votación positiva también invoca una operación de incremento, por lo que también debería estar prohibido ;-)
Marc van Leeuwen

De hecho, pensé en eso, tuve una respuesta aún más corta: p=[2.9,2.92..]!!([0,6..]!!2)... y en esta se ..ve mal. Pero Haskell está fuertemente tipado, y el incremento en la respuesta que di es de Charno Numy no es aritmético, lo que en realidad está prohibido. Necesitaría un fromEnumpara convertir los caracteres a números para usarlos de esa manera. De todos modos, mi conciencia está limpia :)
bazzargh

66
@yhager: ['.' ..] es la secuencia de caracteres "./0123456 ..." (etc.). (a: n: y: t: i: m: e: _) es una coincidencia de patrón que extrae los primeros 7 caracteres, [m, a, t, e] reordena 4 de ellos en "3.14". Sabiendo que esto es lo que quieres hacer, es cuestión de buscar en el diccionario para encontrar palabras con la estructura correcta. Lo que hice ... por ejemplo, otro par era el "traje más feo". Entonces se te ocurre una broma :)
bazzargh

32

Código Morse, 33 bytes

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

Técnicamente hablando, la información solo toma 21 bytes.


11
Definitivamente necesitamos más soluciones de golf en código Morse aquí ...
dejó de girar en contra del reloj

26
Técnicamente hablando, yo diría que 21 bits , no bytes
Michael M.

14
@Michael ya que el código Morse puede ser un punto, un guión o un espacio, ¿no requeriría más de 1 bit para almacenar 1 operación?
smcg

55
@smcg ButSpacesAreForWeakPeopleWhoCan'tReadThingsLikeThis
Cole Johnson

8
Por mucho que me guste el código Morse (y, por lo tanto, esta solución), pero no es eso en contra de la regla 3: "No puede usar ninguna variable / constante predefinida que su idioma pueda tener como reemplazo de 3, 1 y 4." o incluso la regla 2: "Los dígitos 3, 1 y 4 pueden no aparecer en ningún lugar de su código".
kratenko

27

J - 15 11 10 char

Lo hizo más corto, usando lo fantástico i:.

6{i:6.28j8

Explicado:

  • 6.28j8 - El número complejo 6.28 + 8i.
  • i:- Aquí es donde sucede la magia. i:en un número complejo A + Bi, B ≠ 0 toma B + 1 puntos igualmente espaciados del intervalo [-A, A].
  • 6{ - Tome el elemento en el índice 6, que resulta ser 3.14.

Anteriormente, teníamos las siguientes tonterías:

|.'.'2}":22b8d5

Explicado por explosión:

         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'

En lugar de |.'.'2}":22b8d5, puede guardar 2 caracteres seleccionando un número que no requiere inversión:'.'1}":16bbc6
racionalis

3
@epicwisdom Los dígitos 3, 1 y 4 están prohibidos. Tengo que usar un número en la forma 41X3porque sólo se me permite modificar los caracteres en los índices 0 y 2.
algorithmshark

20

Línea de comando de Linux, 35 bytes

Este no está cerca de ganar, pero aquí es por diversión:

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

Salida (después de 2 segundos):

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

Cita de la pregunta: "No hay solicitudes web".
Pomo de la puerta

99
@Doorknob ICMP echo request! = Solicitud web. En cualquier caso, el ping es 4.6.3.14, de la que no consigo ninguna respuesta, así que no es como si me estoy volviendo hacia atrás información útil de internet
Trauma digital

10
@Doorknob Pero si esto todavía te molesta, podemos hacer esto :;ping -t${#?} -qc2 67502862|grep -oP '.\..\d'. Esto establece el TTL en 1, por lo que el router saldrá del eco ICMP saliente antes de que se acerque a Internet
Trauma digital

1
Puede guardar 9 s usando ping -w2 67502862. (Edición de Ninja porque antes de avisar a w1, casi rompí las reglas)
Lolesque

@lolesque Gracias. Sin embargo, no mejora el puntaje de golf ;-)
Digital Trauma

16

GolfScript, 18 13 12

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

Versión antigua:

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

¡Es muy artístico, solo 3 personajes únicos! ;)

Cómo funciona:

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

Aquí hay una explicación de la versión de 12 caracteres (mucho más interesante, IMO):

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

Funciona porque n`,es 4, como n`es '"\n"'. La misma lógica para '.'`,. También cambia en lugar de crear una nueva cadena para guardar un carácter (gracias @algorithmshark).

Versión alternativa:

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

o

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

O cualquier cosa en esas cuerdas, de verdad. :PAGS


Solo 3 personajes diferentes, genial :)
aditsu

¿ '.'.`,\.,n`,Trabajaría para salvar un char? Reutilizando el '.'duplicando e intercambiando.
algorithmshark

@algorithmshark Sí, gracias!
Pomo de la puerta

¡Esto es muy inteligente! +1
VisioN

esto se parece a la versión del código Morse
pwned

14

La respuesta de OP.

Mathematica, 21 20 18

Esto se siente barato ...

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

o

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

Descubrí cómo hacerlo 18:

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

Haskell, 49 48 12

(48 incluye el nuevo carácter de línea)

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

Ejecútelo llamando a la rfunción.

Usando el método como con Mathematica anterior, puede escribir esto en GHCi:

[-2.86..]!!6

Java, 87 86

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

Scala, 27

Traducido de Java según lo sugerido por Score_Under . (Realmente no sé Scala)

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

Oh, 0xees inteligente ¿Te importa si mejoro mi respuesta JS con eso? ;)
Martin Ender

La mayoría de Java se puede convertir directamente a scala, que generalmente es más corta si realmente desea guardar en los bytes; si lo está utilizando como un script, todo es solo: print ("tri" .length + "." + 0xe)
Score_Under

Sí, pensé en lo mismo, que es más corto en Julia que [-.86:5][5]en 11, pero pensé que no contaba ya que los rangos son solo matemáticas.
gggg

12

Bash, 50

Los mensajes de ayuda / error no son recursos externos, ¡son la salida de un comando!

Si algo es abuso de reglas, esto es todo. Utiliza la coincidencia que el mensaje de ayuda dado STDERRpor el comando exacto

ping6

tiene 314 caracteres de longitud (al menos en Ubuntu 13.10 con iputils-121221). EDITAR: aprecio que esto sea mucho menos portátil de lo que esperaba ...

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

La primera línea toma la longitud del carácter del mensaje de ayuda y la almacena en una variable.

Como en mis otras respuestas, las siguientes líneas obtienen el número 1 tomando el estado de salida de false(no muy portátil pero esto es después de todo!), Luego use ese valor para insertar un punto decimal en la última línea

Salida: 3.14


usted señor es genio
Joshua

1
Uh oh, "2.81" en Ubuntu 12.04 (iputils-101006). +1 de todos modos ;-)
Digital Trauma

@DigitalTrauma según info ping6tengo iputils-121221

también vea mi chmodrespuesta abusiva a esta pregunta en codegolf.stackexchange.com/a/25724/16402

2
aún más corto:ping6|&wc -c|sed 's/./&./'
malkaroee

11

Bash + TeX 28 bytes

Si tiene instalado TeX:

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

El número de versión de TeX asintóticamente se acerca a pi a medida que el software mejora. Entonces, a medida que pasa el tiempo, ¡puede usar esta implementación (no conforme) para imprimir más y más dígitos!

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

Esto imprimió 3.1415926 en 2011; a partir de enero de 2014, imprimirá 3.14159265.


¡Amo esto!
gniourf_gniourf

Puede usar tex -v|grep -oP '.\..\d'para guardar 4 bytes. (Regex robado de la respuesta de DigitalTrauma .) De todos modos, +1 porque solo pensé en la misma respuesta.
ace_HongKongIndependence

10

JavaScript, 20 bytes

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

Úselo en una consola, para que el resultado se imprima directamente. De lo contrario, alert(...)agregará otros 7 caracteres.

Al igual que mi otra respuesta, me di cuenta de que es mucho más corto en JS.

La idea de usar 0xepara 14 se toma de la presentación del OP con el amable permiso del OP.


1
Está bien, puedes usarlo :)
kukac67

1
Solución de 20 byte alternativa:(x='.'+0xE).length+x
nderscore

@nderscore esa es una idea bastante buena. Si publica eso como otra respuesta, obtendrá mi upovote;)
Martin Ender

10

Fecha GNU, 17 bytes

date -d2/5 +%u.%y

Este solo garantiza que funcione este año, pero no veo ninguna limitación en las reglas sobre esto ;-)

El +es simplemente indica el inicio del especificador de formato para datey no es una suma aritmética. Lo mismo con el -, que indica la fecha de entrada.

Salida:

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

only guaranteed to work this yearEstá bien .. :)
kukac67

10

Bash, 17 bytes

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

Guión, 41 bytes

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


..










.

Bash se quejaría en voz alta sobre el marcador final que falta mientras que Dash no, por lo que una solución Bash sin mensajes de error requeriría dos bytes adicionales.
Dennis

+1 también. ¿Supongo que @TheDoctor olvidó hacer clic en el botón de votación?
Trauma digital

@DigitalTrauma oops ... arreglado
TheDoctor

7

Golpe 23 22

seq 2 .02 5|sed -n 58p

Shell (sin expansión de historial) 20

seq 2 .02 5|sed 58!d

seq 2 .06 5|sed -n 20pTambién funciona como se indica en la respuesta de Mathematica de OP.
user80551

sed 58!dEs un poco más corto.
Dennis

@Dennis Weird, sustitutos de gnome-terminal !dcon dpkg ...los que comencé el último comando que ejecuté d. Funciona bien kshpero zshdice zsh: event not found: dque eso definitivamente está siendo sustituido por algo.
user80551

Eso se debe a la expansión de la historia de Bash . Está deshabilitado de forma predeterminada para los scripts, por lo que si guarda el mismo comando pi.shy lo ejecuta bash pi.sh, funcionará bien.
Dennis

6

Python, 39 o 28 47 o 34

(Gracias Score_Under por jugar tanto golf)

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

+ Aquí está el operador de concatenación de cadenas, no la suma.

Copiando el 0xetruco del OP, aquí hay 28 caracteres con la ayuda de @psal

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

Versiones antiguas:

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

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

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

El segundo se puede acortar eliminando el espacio después de la impresión y utilizando un formato "% s" en lugar de str (). cf print"%s.%s"%(len('aaa'),0xe)a 29 bytes. También puede hacer lo mismo con el primero: print"%s.%s%c"%(len('aaa'),len('a'),52)a 39 bytes.
Score_Under

@Score_Under Oh, pensé que usar %saún requiere str. Gracias por el consejo :)
ace_HongKongIndependence

1
otra solución de 29 bytes:print('%s,%s'%(0xE9,0xE))[2:]
onionpsy

1
... y en 28 bytes:print('%X.%s'%(675,0xE))[2:]
onionpsy

5

GolfScript, 8 bytes

'??.'(\(

Este programa contiene caracteres ASCII no imprimibles, por lo que no se puede pegar directamente aquí. En cambio, los signos de interrogación en el código anterior deben reemplazarse con los bytes 03y0E en hexadecimal.

Por conveniencia, aquí hay un volcado hexadecimal del programa real. Los usuarios de Unix / Linux pueden ejecutar este volcado hexadecimal xxd -rpara reconstruir el programa:

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

Explicación:

  • Los primeros cinco bytes del programa forman un literal de cadena entre comillas simples que codifica los tres caracteres con los códigos ASCII 3, 14 y 46 (= período ASCII).

  • (corta el primer carácter de la cadena y empuja su código ASCII (3) en la pila. \intercambia los dos primeros elementos de la pila, tirando de la cuerda hacia arriba y el segundo( corta otro carácter de la cadena, empujando nuevamente su código ASCII (14) en la pila.

Al final del programa, la pila (excluyendo la cadena de entrada vacía) se ve así:

3 "." 14

Al final del programa, el comportamiento predeterminado del intérprete de GolfScript es stringificar e imprimir todo en la pila, produciendo el resultado deseado.


1
¡Chasquido! Tuve exactamente la misma idea , solo 12 horas demasiado tarde. Supongo que debería leer la página 2 antes de publicar ... Oh, bueno, retrocediendo, +1 para ti.
Dennis

5

bash - 39

Todos sabemos que los primeros dígitos de Pi pueden calcularse a partir de la siguiente declaración:

¿Puedo tener un gran recipiente de café?

Necesitamos solo 2 decimales, ¿verdad?

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

4

Mathematica - 78

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

En el espíritu del día de Pi! : D
kukac67

4

Perl, 15 20 bytes

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

¿No es PI__ una constante relacionada con Pi?
Llamageddon

No es una constante Son dos cadenas siendo XOR-ed.
nderscore

Los operadores bit a bit no están permitidos.
kukac67

Oh, no lo son. Bueno, ahí va mi solución hipotética. Dicho esto, si los operadores bit a bit no están permitidos, ¿hay mucho más que hacer que contar longitudes de cadenas?
Llamageddon

Hay varias respuestas que usan números en diferentes bases.
kukac67

4

tr + Bash, 17 bytes

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

Los -caracteres aquí no son operadores de sustracción aritmética. Indican rango.

Salida:

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

Inteligente, aunque una traducción de caracteres es realmente aritmética oculta.
Pierre Arlaud

@ArlaudPierre True, aunque diría que casi todas las soluciones aquí tienen una aritmética oculta de una forma u otra. Si observa las instrucciones reales de la máquina ejecutadas para cualquiera de estas respuestas, creo que todas tienen algunas instrucciones aritméticas o bit a bit, que la pregunta prohíbe su uso explícito .
Trauma digital

@ArlaudPierre La pregunta requiere que se envíe la cadena "3.14". Independientemente del idioma, en algún lugar bajo el capó, esto degenerará en una write()llamada o similar. Necesariamente habrá algo de aritmética debajo de las cubiertas para asegurar que se escriba el número correcto de bytes, si no hay otro lugar. Creo que el punto de la pregunta es ocultar los cálculos aritméticos / bit a bit necesarios.
Trauma digital

4

BASH, 57

Esto es más largo que la mayoría de las respuestas, pero no hay nada malo en intentarlo.

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

da

3.14

3
Lo siento por respuestas re-golf de todo el mundo: P, En el mismo sentido, ya que me encontré:c=wc\ -c;echo `$c<<<..`.`$c<<<''``$c<<<...`
Score_Under

4

C, 36

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

1
Si lo combinamos con mi respuesta, podemos ahorrar 2 bytes para obtener una puntuación de 34 :main(){printf("%d\b.%d",' ',0xe);}
vsz

3

JavaScript: 23 bytes

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

Gracias a nderscore (ver sus comentarios)!


Niza: DI ni siquiera sabía de esto
kukac67

Sin 4embargo, contiene ;)
nderscore

@nderscore ¡Ah! ¡Tienes razón! ¿ btoa()Funcionaría para llegar de 3.14alguna manera?
kukac67

@ kukac67 El conjunto de caracteres base64 no contiene un punto :(
nderscore

3
Versión "legal" de 23 bytes atob('Mw')+atob('LjE0')y versión "ilegal" de 14 bytes:atob("My4xNA")
nderscore

3

C#

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

ĺ es el carácter 314, no una variable o constante predefinida. .ToString formatea la salida en un dígito, un punto y luego 2 dígitos más.


Agradable, pero actualmente no se emite y no es compilable.
Rudi Kershaw

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

3

GolfScript, 13 10

{xy}.*'.'\

¡Gracias a Ilmari Karonen por la versión mejorada!

xy yson caracteres no imprimibles (consulte http://www.asciitable.com/ para obtener más información), respectivamenteETXSO , y que decodifican a 3 y 14.

Lo que hace este código debería ser bastante claro.

Nota: la siguiente regla

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

no está roto, ya que los caracteres ASCII no son variables ni constantes.


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

Los dígitos no aparecen en ningún lado. No hay entrada
Vereos

¿Y tu código final es ...?
user80551

{}.*.{}.*, y dentro de los corchetes hay 2 caracteres no imprimibles, respectivamente ( asciitable.com ) ETXySO
Vereos

2
Podría acortar esto a {xy}.*'.'\ (10 caracteres). Sin embargo, el mío aún es más corto. ;-) Pero +1 por enseñarme sobre { }.*(y { }.%), tendré que tener ese truco en mente.
Ilmari Karonen

3

Nuevo en el sitio y todavía no puedo escribir comentarios, así que lo publicaré aquí. Solo me pregunto acerca de esta solución Javascript:

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

y esta regla:

3.14 es lo único que puede generar, no puede ser parte de un resultado más largo / más grande.

Si ejecuto este código en la consola de mi navegador, obtengo:

"3.14"

o usando Nodo en la línea de comando:

'3.14'

pero si ejecuto este código:

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

Yo obtengo:

3.14

Usando Node.js para ejecutar un archivo .js, puedo escribir:

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

y obten:

3.14

1
Nunca hubo una limitación sobre qué tipo puede ser el valor resultante. Entonces, la cadena o el número no importan. Las comillas alrededor de la cadena no se consideran parte de la salida.
nderscore

¡Bienvenido a CodeGolf y Programming Puzzles @RobertMunn! Esta respuesta es válida ya que obedece todas las reglas ... Tenga en cuenta que consoletiende a encerrar cadenas entre comillas al mostrarlas ... Ha utilizado +pero no aritméticamente, se está utilizando como un concatenador, por lo que es válido ... También podrías haber hecho esto más pequeño usando en alertlugar de console.log... Pero por lo demás, un gran esfuerzo. Esperamos que te guste aquí ...
WallyWest

Eso es muy lindo! Debería considerar agregar el nombre del idioma y el número de bytes (por ejemplo, Javascript, 20)
Vereos

1
Gracias Ace, estoy aprendiendo las reglas aquí. No podía dejar un comentario, así que publiqué por separado, supongo que esto fue más una aclaración sobre el tipo de publicación de reglas, que nderscore y WallyWest aclararon para mí. Agradezco la paciencia de todos con un newb.
Robert Munn

2

Mathematica, 56 bytes

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

No hay mucho que decir. Estoy generando los dígitos como longitudes de cadena y los concateno.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.