Escriba la función más corta para convertir una dirección IP en su representación entera y generarla como un entero.
Para cambiar una dirección IPv4 a su representación entera, se requiere el siguiente cálculo:
- Divide la dirección IP en cuatro octetos.
(Octet1 * 16777216) + (Octet2 * 65536) + (Octet3 * 256) + (Octet4)
Entrada de muestra
192.168.1.1 10.10.104.36 8.8.8.8
Salida de muestra
3232235777 168454180 134744072
code-golf
conversion
Kyle Rozendo
fuente
fuente
Respuestas:
PHP - 21 caracteres
fuente
MySQL - 20 caracteres
fuente
Rubí (sin incorporaciones / evaluación) - 47
Prueba:
fuente
C: 79 caracteres
EDITAR: eliminado C ++, no se compilaría sin encabezados; con GCC, el
printf
ystrtol
llamadas a funciones desencadenan funciones integradas, por lo tanto, las cabeceras se pueden saltar. Gracias a @ugoren por los consejos. Esto se compilará tal cual sin opciones adicionales paragcc
.EDIT2: en
return
realidad es redundante :)fuente
Golfscript - 16 caracteres
Como programa independiente, esto es aún más corto a las 11.
Extremadamente sencillo. Evalúa la cadena de entrada (
~
) y la coloca en una matriz[]
. Como las.
s en la cadena duplican la parte superior de la pila, solo tomamos todos los demás términos en la matriz (2%
). Ahora tenemos una matriz que básicamente representa un número base 256, por lo que utilizamos una función integrada para realizar la conversión. (256base
).fuente
{:B;{\B*+}*}:base
(aunque la función real está sobrecargada para las conversiones de la otra manera). Es interesante notar que la conversión de base para cadenas es la misma que las matrices (ya que las cadenas son solo matrices sin anidamiento, pero con un formato de salida diferente).base
Befunge - 2x11 = 22 caracteres
Tan cerca, Befunge ganará algún día.
Explicación
La característica más distintiva de Befunge es que, en lugar de ser un conjunto lineal de instrucciones como la mayoría de los idiomas; Es una cuadrícula 2D de instrucciones de un solo carácter, donde el control puede fluir en cualquier dirección.
Estos personajes cambian la dirección de control cuando son golpeados, esto hace que el bucle principal.
Esto ingresa un número y lo empuja a la pila (
&
), saca los dos valores superiores de la pila, los agrega y los empuja nuevamente a la pila (+
), ingresa un solo carácter y coloca su valor ascii en la pila (~
), luego empuja 1 sobre la pila y los agrega (1+
).El intérprete que he estado usando devuelve -1 para el final de la entrada, algunos devuelven 0 en su lugar, por lo que la
1+
parte podría eliminarse para ellos.Esto
#
hace que se omita el siguiente carácter, luego_
saca un valor de la pila y, si es cero, envía el control a la derecha, de lo contrario lo envía a la izquierda. Si el valor era cero,.
saca un valor de la pila y lo muestra como un entero y@
detiene el programa. De lo contrario,v
envía el control al bucle de retorno.Esto simplemente multiplica el valor superior de la pila por 256 y devuelve el control al inicio.
fuente
>v<^
que es en realidad el bucle principal de este programa. Supongo que en este caso el control en realidad no pasa por los últimos 3 espacios en la parte inferior, pero me resulta más fácil contar los programas Befunge como el rectángulo delimitador más pequeño; y si intentara contar el flujo de control, se metería en problemas con los programas auto modificables.Rubí (40)
->
fuente
to_i 16
comohex
para guardar algunos caracteres.Ruby - 46 caracteres
fuente
Golfscript - 21 caracteres
fuente
Python
5645fuente
C ++: muchos caracteres
fuente
PowerShell
6661Variación sobre la respuesta de Joey:
fuente
AWK en ~ 47 caracteres
Primera vez aquí ... Um, no estoy seguro de cómo contar esto, pero sin el 'eco' son 47 caracteres en AWK. (No es exactamente un campo de golf bogey, pero está en el hoyo).
¡¡¡Día completo temprano para #tbt, también, así que en realidad cumplí un horario !!! * 8-)
Día de la bandera
fuente
{print $1*16777216+$2*65536+$3*256+$4}
. Por supuesto, tendría que mover el separador de campo al programa, en lugar de especificarlo como una bandera.Golpe - 46
Tabla de contenidos
Encontrará 4 versiones de golf diferentes:
¡Nueva versión! 15/11/2018 Más golf, 46 char
Explicación
$_
jugar más al golf.${1//./ }
sustituirá todos los puntos.
por espacios.
printf
que representará algo como192<<(_-=8)|168<<(_-=8)|1<<(_-=8)|1<<(_-=8)|
0
último O|
y_
a 32 . bash leerá el constructo de izquierda a derecha, así que$((_-=8))
hazlo24
en el primer turno ,16
el segundo, y así sucesivamente.en acción:
Por diversión: tratando de obtener
$_
contenido, después de esto:En una función:
o en un bucle: -> 60
bash (v4.1 +): 47
Primer comentario
Explicación:
${1//./ }
sustituirá todos los puntos.
por espacios.
set --
establecer parámetros posicionales ($@=($1 $2 $3...)
)set -- ${1//./ }
se dividirá$1
por puntos y conjunto$1
,$2
,$3
y$4
si la cadena containg3
puntos (y sin espacios).en acción:
o en una función:
o en un bucle: -> 61
en acción:
Otra versión de golf diferente: 65
Muestra:
En un bucle (+14): 82
* o un poco más feo: 70 *
donde
printf
dar un poco de cuerda como|192<<24 |168<<16 |1<<8|1<<24 |0<<16 |0<<8
tenemos que cortar por fin<<2...
.golf con
mapfile
, más largo: 68o con bucle: 82
fuente
set --
pieza. Gracias.set -- foo bar
se completará$@
con foo as$1
y bar as$2
.Windows PowerShell, 70
Enfoque ingenuo:
Con el uso de System.Net.IPAddress: 76
Prueba:
fuente
Befunge-93 - 36 caracteres
fuente
Perl: bricolaje (para líneas). (40)
# Valor de uso en $ i
Función de bricolaje (65):
fuente
split'.'
lugar desplit/\./
split q{.}
evitar la necesidad de escapar de las comillas de shell: /Haskell - 14 caracteres
uso en GHCi:
El único problema es que tiene que poner espacios a la izquierda o derecha del punto, de lo contrario, los números se interpretarán como coma flotante.
fuente
C # - 77 caracteres
fuente
JavaScript (45 caracteres)
Requiere soporte para el
.reduce()
método Array introducido en ES5 y funciones de flecha .fuente
Powershell,
4743 bytesScript de prueba:
Salida:
fuente
C # - 120 caracteres
Mi primer código de golf: sé amable;)
fuente
D: 84 caracteres
fuente
Python 3.2 (69)
fuente
PHP (no incorporado / eval) - 54
fuente
<?php
, no solo<
?Perl, 14 caracteres:
fuente
Stax , 9 bytes
Ejecutar y depurarlo
fuente
05AB1E , 5 bytes
Pruébalo en línea!
fuente
Perl 6 , 16 bytes
Pruébalo en línea!
fuente
C (gcc)
-m32
/ POSIX, 33 bytesPruébalo en línea!
En una plataforma big-endian, puede simplemente definir una macro con
-Df=inet_aton
de 13 bytes .fuente