Introducción
A raíz de las consecuencias del paquete npm del pad izquierdo , tengamos un código de golf para implementar el pad izquierdo.
La función de pad izquierdo consta de 2 argumentos predeterminados y 1 argumento adicional, en forma de cadena , longitud , ( padchar ). Si no se proporciona el padchar, se estandariza a un carácter de espacio . Tomemos un ejemplo con dos argumentos:
left_pad("abc", 6)
Primero, observamos la longitud de la cuerda, que es 3 . Después de esto, necesitamos rellenar esta cadena a la izquierda hasta que la longitud de la cadena completa haya alcanzado la longitud dada en la función. En este caso 6 . Como no se proporciona el padchar , debemos rellenar esto con espacios:
abc
Esta es una cadena con 3 espacios y la cadena inicial, que resulta en una cadena con longitud 6. Aquí hay un ejemplo con el padchar dado:
left_pad("abc", 6, "-")
Simplemente hacemos lo mismo que en el ejemplo anterior, pero reemplazamos los espacios con el padchar. En este caso, el guión:
---abc
La tarea
Dada la cadena , la longitud y tal vez el argumento adicional padchar , genera la cadena con relleno izquierdo. Puede suponer que el número de longitud es igual o mayor que la longitud de la cadena. El padchar siempre constará de 1 personaje.
Casos de prueba
left_pad("string", length, ("padchar")) === "left-padded string"
left_pad("foo", 5) === " foo"
left_pad("foobar", 6) === "foobar"
left_pad("1", 2, "0") === "01"
left_pad("1", 2, "-") === "-1"
Este es el código de golf , por lo que gana el envío con el menor número de bytes.
Respuestas:
Pyth,
1311 bytesProbar aquí .
Toma información de STDIN como la cadena en la primera línea, la longitud en la segunda línea y el relleno de caracteres opcionalmente en una tercera línea.
fuente
JavaScript (ES6), 43 bytes
fuente
p+=s
, puede agregar 2 bytes para hacerlop+=[s]
, y funcionará.JavaScript (ES6),
374344 bytesPrueba:
No estoy seguro si desea contar la declaración de función, lo incluiría en línea.
fuente
slice
es más corto quesubstr
.console.log(f("whatever",10, "*"))
, peroconsole.log(("*".repeat(10)+"whatever").substr(-10))
Javascript ES6, 35 bytes
Intentalo. Creo que esta es la implementación más corta posible actualmente en Javascript.
fuente
Python 3,
333129 bytesBastante sencillo.Gracias a @xnor por recordarme questr.rjust
es una cosa. :PAGSPara la misma longitud (también gracias a xnor):
Solución previa:
fuente
(x*b+a)[-b:]
oa.rjust(b,x)
. En realidad,str.rjust
podría decirse que funciona para todo.rjust
estaba integrado, ¡gracias!f(1, 2, 0) === '01';
05AB1E ,
119 bytesCódigo:
Explicación:
Utiliza la codificación CP-1252 . Pruébalo en línea .
fuente
JavaScript (ES5), 70 bytes
Usando la recursividad ...
Mi primer intento fue de solo 57 bytes:
Pero solo pasó las 2 primeras pruebas:
Todavía me gusta el más corto, porque en la práctica, pasar números a una función de manipulación de cadenas no es una característica que necesitaría.
fuente
Mathematica, 13 bytes
Respuesta integrada solo # 3 (primero fue
Range
, segundo fueSurd
) O menos integrada: (35 bytes)fuente
It's common practice to disallow built-ins that exactly implement what the challenge asks if that's a concern.
(Llamamiento a la autoridad: Martin) (pero también sentido común)Julia, 4 bytes
Pasa todos los casos de prueba:
fuente
rect 7 cor
?lpad("rect", 7, "cor") => "correct"
Javascript (ES6), 55 bytes
Cree una matriz vacía de valores y una versión de unión.
Es más legible pero
return
agrega algunos caracteres más.fuente
`
parainline code blocks.
.+=
devuelve el valor de su operando izquierdo, por lo que la segunda versión se acorta:(a,n,c=' ')=>(new Array(++n-(a+='').length).join(c)+a)
pero se vuelve más larga cuando agrega cadenas de relleno multicar.Bash, 57 Bytes
Parámetros: ancho de cadena padchar
Haz una cadena de espacios de ancho .
Convierte cada personaje espacial en padchar .
Escriba el relleno y luego la cadena .
fuente
Python, 41 bytes
Sin el rjust incorporado, 43 bytes:
(no es lo que uno espera que haga, pero pasa el conjunto de pruebas)
fuente
s=str
y reemplazars
constr
a misma cuenta de bytes.Jalea , 12 bytes
Tantas referencias variables. ¿No se suponía que Jelly era un lenguaje tácito ?
Pruébalo en línea!
Cómo funciona
fuente
padchar (⁵, defaults to 10)
¿No debería ser por defecto20
o32
??
verifica si tiene su valor predeterminado 10 y produce un espacio en ese caso.JavaScript ES7, 16 bytes
incorporados ftw! Solo funciona en Firefox 48 y superior. Válido ya que esta característica se agregó el 12 de marzo.
Esto toma datos como:
fuente
Lucio , 67 bytes
suspiro . La cadena vacía se
""
evalúa comotrue
. ¿¡Por qué!?mixto mixto mixto mixto mixto sopa de lucio ...
fuente
Pyke , 12 bytes (sin competencia)
nodo de entrada agregado, corrección de errores en el nodo len, cambiar los resultados predeterminados en el nodo de asignación después de que se publicó el desafío.
Explicación:
fuente
JavaScript ES6, 38 bytes
Una solución alternativa.
fuente
JavaScript (ES6), 34 bytes
Usé una solución recursiva.
fuente
Ruby, 42 bytes
Parámetros: cuerda, tamaño, padchar.
Conjunto de pruebas a continuación; debería imprimir todos los "verdaderos", simplemente ponga todo en el mismo archivo.
fuente
Java 8,
8688 bytesEsta es una función. El tercer argumento es
varargs
para permitir el pad opcional char (el valor predeterminado es' '
)Recursión! +2 bytes (corchetes agregados debido a un error de tipo incompatible)
fuente
PHP
5448 bytesUtiliza la codificación de Windows-1252.
Ejecutar así (
-d
agregado solo para easthetics):Versión anterior (sin el incorporado):
Ajustes
str_pad
lugar de un bucle. Dejando el viejo como referencia, ya que las construcciones están mal vistasfuente
R, 50 bytes
Tarde a la fiesta otra vez pero aquí va:
Esto simplemente imprime la salida en stdout pero en realidad no devuelve la cadena acolchada (no estaba seguro de si este es un requisito para el desafío). Si esto es necesario, la solución es un poco más larga a 61 bytes:
fuente
C, 64 bytes
Pruébalo aquí .
fuente
gcc
permitirá queundefined reference to function printf
pase e incluirprintf
en sí, pero no hubo suerte paramemset
,asprintf
ystrlen
. Debe agregar las#include<string.h>
definiciones ... etc. para que esto sea válido.gcc-5.1
. No estoy seguro de si están utilizando indicadores del compilador o de lo que tienes detrás de escena de lo que no soy consciente. Inicialmente estaba usando esto como mi justificación para que no se ejecute en su entorno, pero ahora no estoy seguro ...gcc 5.2.1
en Linux, por lo que puede salirse con la suya,Ideone C, 64 bytes
pero si va a reclamar que es C, compílelo. : pf
toma cuatro parámetros, no 3? ¿Necesita la dirección de la cadena o ...? De cualquier manera,f
debe tomar como máximo 3 argumentos.