He participado en un número de código PHP de golf retos recientemente y algunas de las técnicas que se utilizan para leer datos de un archivo, como fopen()
y fread()
, o file_get_contents()
realmente dar mi código de una paliza en el recuento de carbón. Especialmente los métodos proporcionados para leer en la entrada de línea de comando.
Mi pregunta es, ¿cuál es la forma más rápida (menos pulsaciones de teclas) para leer y escribir en el contenido de un archivo, y cuál es la forma más rápida (menos pulsaciones de teclas) para leer una línea desde el indicador?
(Nota: como se trata de código golf, no puedo usar ninguna biblioteca externa).
fuente
Dependiendo del formato de entrada, fgetcsv y fscanf a menudo también pueden ser protectores de bytes.
Por ejemplo, suponga que cada línea de su entrada consta de dos enteros separados por espacios. Para leer estos valores en una matriz, puede usar uno de:
O si desea leer cada uno de ellos en una variable diferente:
fuente
Para leer archivos no físicos (lectura de entrada)
Si tiene una sola entrada de línea, use
-F
y$argn
para leer desde STDIN. Esto es solo 5 bytes y mucho más corto que otros métodos.Ejemplo: ¡ Pruébelo en línea!
Básicamente
-F
ejecuta su código una vez para cada línea de la entrada y llena la$argn
cadena de esa línea de entrada. Más información: https://www.php.net/manual/en/features.commandline.options.phpSi tiene una entrada de varias líneas, use
$argv
.$argv
es una matriz que a partir del índice1
contiene todos los argumentos que pasa a su código. Entonces puede usar$argv[1]
y así sucesivamente, que son solo 8 bytes. También puede pasar varios argumentos y recorrerlos con lofor(;$a=$argv[++$i];)
que generalmente es más corto que otros métodos.Ejemplo 1: ¡ Pruébelo en línea!
Ejemplo 2: ¡ Pruébelo en línea!
Más información: https://www.php.net/manual/en/reserved.variables.argv.php
fuente