Muchos de ustedes pueden haber interactuado con personas de Rusia en Internet en algún momento, y un subconjunto de ustedes puede haber notado el método un poco extraño que tienen para expresarse.
p.ej удали игру нуб)))
donde )))
se agregan para enfatizar la afirmación anterior, he estado trabajando en una teoría de que la relación de )
's con el resto de la cadena es directamente proporcional a la cantidad de énfasis implícito, sin embargo, a menudo me resulta difícil calcular la relación sobre la marcha, ya que también estoy tratando de hacer frente a una gran cantidad de abusos, por lo que me gustaría que el código más corto posible me ayudara a calcular cuál debería ser la cadena resultante, por un valor de entusiasmo entre 0 y 500%, dado el original , una cadena poco entusiasta, esto ayudará mucho a mi investigación, ya que no tendré que escribir scripts voluminosos cada vez que desee probar mi hipótesis.
Entonces, el desafío:
escribir un programa o función completa que, con dos argumentos, una cadena de longitud desconocida y un número, en formato entero (entre 0 y 500) o en formato decimal (entre 0 y 5, con 2 puntos de precisión)
- retorno / mostrar la cadena original, con el sufijo con un número de
)
's - el número se calculará como una relación entre el número de entrada y la longitud de la cadena.
- así que si se proporcionó el número 200, o 2.00, el 200% de la cadena debe tener el sufijo
)
's - el número de corchetes redondeados en situaciones decimales no importa.
- Se requiere un script para admitir caracteres ASCII imprimibles.
- solo tiene que admitir un formato de número de entrada, de su elección.
Ejemplos:
"codegolf" 125 = codegolf))))))))))
"codegolf" 75 = codegolf))))))
"noob team omg" 0.5 = noob team omg))))))
"hi!" 4.99 = hi!)))))))))))))))
Código de ejemplo (PowerShell) (con entrada decimal):
Function Get-RussianString ([string]$InputStr,[decimal]$Ratio){
$StrLen = $InputStr.Length
$SuffixCount = $StrLen * $Ratio
$Suffix = [string]::New(")",$SuffixCount)
return $InputStr + $Suffix
}
Get-RussianString "codegolf" 0.5
codegolf))))
Este es el código de golf, ¡el código más corto gana!
)
énfasis como un!
? ¿Es algún problema de codificación?!
s, pero las escriben como están, no es muy común, pero es bastante icónico.)
es un emoticón reducido:)
. Se usa muy comúnmente entre los jóvenes hasta donde yo sé.)
No es un énfasis, es simplemente el smiley. Hasta donde sé, es más difícil escribir:
cuando se usa la distribución del teclado ruso, por lo tanto, sonríen sin ojos.:
en un diseño ruso (ЙЦУКЕН) como escribir^
en QWERTY. Pero, de hecho,)
es una versión reducida de:)
. Es mucho más fácil mantener presionado Shift-0 que alternar teclas repetidamente.Respuestas:
Jalea , 7 bytes
Pruébalo en línea!
Utiliza el formato decimal.
¿Cómo?
fuente
Perl 6, 21 bytes
fuente
Lisp común,
595250Paréntesis? Estoy en.
Detalles
Cadena de control de formato
~a
: argumento de impresión bonita (aquí la cadena dada)~v@{...~}
: bloque de iteración, limitado a la iteración V, donde V se toma como argumento, es decir, la(* ...)
expresión. Se supone que la iteración itera sobre una lista, pero cuando agrega el@
modificador, la lista es la lista restante de argumentos a la función de formato. Debe haber al menos un elemento en la lista iterada (de lo contrario, salimos, sin tener en cuenta V). Es por eso que hay un argumento adicional para formatear (0).Dado que el formato no consume ningún elemento de la lista, el bucle es infinito pero, afortunadamente, también está limitado por V, también conocido como el número de paréntesis que se imprimirán.
Editar: gracias a Michael Vehrs por señalar que no hay necesidad de redondear el argumento numérico (la pregunta permite truncar / redondear como queramos, por lo que el comportamiento predeterminado funciona aquí).
fuente
format
acepta un argumento decimal parav
. ¿Quizás Common Lisp's también?format
acepta ...", ya que el Esquema estándarformat
no es compatible~r
; y Guile'sformat
sigue el ejemplo de Common Lisp's.JavaScript ES6,
383130 bytesfuente
s=>n=>s+')'.repeat(s.length*n)
(luego se llamaría asíf("hi!")(4.99)
)Python 2 , 29 bytes
s en la cadena, p es el porcentaje (entero).
Pruébalo en línea!
fuente
05AB1E ,
98 bytesPruébalo en línea!
Funciona tanto para entero como decimal, orden de argumentos:
f(String, Double)
fuente
ï
se realiza implícitamente×
con argumento flotante.Python, 30 bytes
Utiliza la entrada decimal.
Pruébalo en línea!
fuente
Pyth, 8 bytes
¡Prueba en línea! Primero toma la proporción de emoción, luego la cuerda de la que debe entusiasmarse.
Explicación:
fuente
PowerShell , 33 bytes
Pruébalo en línea!
Soporta formato decimal.
fuente
R,
624642 bytesFunción anónima que toma cadenas
a
y decimalesn
, imprime la salida en stdout.fuente
Pyth, 9 bytes
Toma dos líneas de entrada: cadena y relación (decimal).
Pruébalo en pyth.herokuapp.com
Explicación
A
denota el primer argumento de una función,B
su segundo argumento.fuente
TI-Basic, 33 bytes
Toma entrada decimal.
fuente
Perl 5, 29 bytes
(El número es el primer argumento, la cadena es el segundo).
Pruébalo en línea!
fuente
CJam , 9 bytes
Pruébalo en línea!
Cadena de entrada en la primera línea, relación de énfasis en el rango de 0 a 5 en la segunda.
Explicación
fuente
MATL,
11108 bytesEsta solución usa la forma decimal de la segunda entrada
Pruébalo en línea!
Explicación
fuente
sB ~, 17 bytes
Explicado:
Los paréntesis se cierran automáticamente.
Aquí está la salida del compilador, si está interesado:
Esta versión del compilador se escribió el 27/01/2017 a las 11:12 p.m., lo que podría haber sido unos minutos después de que se publicara esta pregunta. Aquí hay una versión que funciona en la versión más antigua del compilador, escrita una hora antes:
iS$,N?S$;')'*(N*l(S$))
(22 bytes)fuente
PostgreSQL, 102 bytes
Detalles
Utiliza el formato de entrada entero.
Esto simplemente rellena a la derecha la cadena de entrada con parens a la longitud objetivo.
Llamado con
fuente
Bash + coreutils, 45 bytes
Pruébalo en línea!
Entrada entera.
fuente
echo $1`jot -b \) -s '' $[${#1}*$2/100]`
40 bytes :) pruébaloGroovy, 27 bytes
Solución directa
Programa de prueba :
fuente
Rebol, 39 bytes
fuente
Clojure, 40 bytes
Solución bastante aburrida:
Simplemente reduce la
str
función en una lista de paréntesis de cierre con una cadena como parámetro inicial.Véalo en línea: https://ideone.com/5jEgWS
Solución no tan aburrida (64 bytes):
Convierte la cadena de entrada a un símbolo (para deshacerse de las cotizaciones) y en repetidas ocasiones se aplica la función
list
en él generando secuencia infinita de esta manera:(a (a) ((a)) (((a))) ... )
. Elnth
elemento Takes lo convierte en cadena y reemplaza todos los paréntesis de apertura por nada.Véalo en línea: https://ideone.com/C8JmaU
fuente
#(.replaceAll(str(nth(iterate list %)(*(count %)%2)))"[(\"]""")
1 byte menos (yay) Quería compilar pero no puedo obtenerlo por debajo de 70 bytes.")"
a\)
para guardar un byte.SimpleTemplate, 92 bytes
Toma la cadena como el primer parámetro y la "relación" como el segundo.
La relación es entre 0 y 5, con 2 decimales.
Como puede ver, no es óptimo.
El 2
{echo}
podría reducirse a 1.Debido a un error en el compilador, este código no puede reducirse mucho más.
Sin golf:
Si no existiera ningún error, el código se vería así, 86 bytes:
fuente
C # interactivo,
7767 bytesC # interactivo es dulce.
fuente
using System;
o calificar completamenteMath
. Además, no estoy seguro de si puede hacerlo en forma interactiva, pero podría compilar a aFunc<string, Func<int, string>>
para guardar bytes, es decirs=>p=>s+new...
Math.Round
int
Floor
Floor
Ceiling
SmileBASIC, 29 bytes
fuente
3*4.99
=14.97
, solo14
o15
sería aceptable como respuesta, la versión de 29 bytes debería funcionar bien, lo siento.Gol> <> (Golfish), 17 bytes
Pruébalo aquí .
La línea superior lee los caracteres (
i
) hasta que encuentra una nueva línea (ASCII 10,a
), luego baja (v
).Luego descartamos un carácter (la nueva línea) con
~
, empujamos la longitud de la pila (l
), leemos un float (I
), multiplicamos los dos y repetidamente (R
) empujamos el carácter ")" tantas veces. Finalmente, invierta la pila (r
), envíela y detenga (H
).fuente
PHP, 50 bytes
toma una cadena y un número decimal como argumentos de la línea de comando; Corta el acolchado. Correr con
-r
;Descompostura
fuente
Rubí, 25 bytes
Estoy usando lambdas . El programa de prueba sería algo como:
fuente
Clojure, 68 bytes
Una función anónima que acepta entrada decimal.
¡Literalmente el primer programa Lisp que he escrito! Ya me estoy divirtiendo
fuente
#(...)
, y puede deshacerse de ellasprint
(ya que los retornos de funciones deberían ser aceptables). Puede cambiarreduce
aapply
para lastr
función, y puede cambiar")"
a\)
, que hace lo mismo. Por lo tanto, el código final debe ser:#(str %(apply str(repeat(*(count %)%2)\)))))
.(#(...) "codegolf" 125)
debe agregar 125 por ciento de la longitud de "codegolf" en lugar de 125 veces la longitud de "codegolf". Entonces, el programa fijo sería:,#(str %(apply str(repeat(*(count %)%2 1/100)\))))
que es de 49 bytes.C ++ 14, 43 bytes
Como lambda sin nombre que modifica su entrada, se supone que
s
es similar astd::string
(has.append(int,char)
y se suponep
que es del tipo de coma flotante:Uso:
fuente
Haskell , 37 bytes
Pruébalo en línea! Uso:
"codegolf" ! 125
Una versión que toma un número decimal: (41 bytes)
Pruébalo en línea! Uso:
"codegolf" ! 1.25
fuente