Instrucciones
La dificultad de una pregunta de Code Golf se puede calcular como tal:
¿Dónde v
está el número de visitas que tiene una pregunta?
y a
es el número de respuestas que tiene una pregunta
y ⌈ x ⌉ es el operador del techo .
También:
La dificultad actual de esta pregunta: ***
Tarea
Escriba un programa que tomará dos enteros (v and a)
y generará la dificultad asterisks (*)
.
La entrada puede estar en forma de una matriz, una cadena separada o como argumentos de función separados
Datos de prueba
Views Answers Difficulty Program Output
163 2 2 **
548 22 1 *
1452 24 1 *
1713 37 1 *
4162 32 2 **
3067 15 3 ***
22421 19 10 **********
Ejemplo con pseudocódigo
v: 1713
a: 37
out = clamp(ceil(((v/a)/700)*10), 0, 10); // evaluates to 1
//program will output '*'
¡El código más corto en bytes gana! Se permiten espacios finales / iniciales.
/700 * 10
lugar de/70
?Respuestas:
JavaScript (ES6),
4039 bytesPorque
substring
proporciona la sujeción requerida y el comportamiento de "techo". Editar: Normalmente soy demasiado vago para molestarme, pero debido a que recibió 4 votos a favor, he seguido el consejo de @ MarsUltor para ahorrar 1 byte al curry.fuente
v=>a=>
substr
en su lugar? Sé que el segundo parámetro hace la diferencia, pero no estoy seguro sobre el primero ...slice
sería aún más corto.substr
eslice
interpretan un argumento negativo como una cuenta atrás desde el final de la cadena.He estado queriendo hacer esto por un tiempo ...
HTML + CSS
491487485 bytes-4 bytes gracias a Conor O'Brien
-2 bytes gracias a Release Helium Nuclei
La entrada se toma como el ancho y alto de la ventana de la página; ancho es el número de Vistas y alto es el número de Respuestas.
Puedes probarlo en tu navegador ingresando
como una URL en una nueva pestaña.
fuente
}
s también.05AB1E, 11 bytes
Explicación
Pruébalo en línea
fuente
Javascript (ES6),
3736 bytesAhorré 1 byte al curry, gracias a TheLethalCoder
Mostrar fragmento de código
fuente
v=>a=>
lugar de(v,a)=>
?v=70, a=1
hace?Mathematica,
3835 bytesGracias a @MartinEnder por 3 bytes
fuente
Clip
, que tiene casi la misma sintaxis que la abrazadera de OP, pero luego vi queStringRepeat
tiene el tercer argumento opcional para el truncamiento.Ceiling[]
.EXCEL, 29 bytes
Si cuenta Excel como una representación de VBA Excel, puede usar
donde
v
ya
son el nombre de las celdas de referencia.fuente
CJam,
181514 bytesGuardado 1 byte gracias a Peter Taylor y 3 bytes gracias a Adnan
Pruébalo en línea
fuente
C #,
684948 bytesEsta es la versión C # de esta excelente respuesta de Neil.
Ahorró otros 19 bytes gracias a Neil
fuente
(int)System.Math.Floor(10-v/a/70)
o simplemente(int)(10-v/a/70)
.70d
solo, pero funciona mejor graciasd
allí.v=>a=>
Java 8, 57 bytes
Utiliza una lambda para guardar bytes, realiza el cálculo y las subcadenas para devolver la respuesta.
Aquí está mi clase para probarlo.
Actualizar
fuente
java.lang.
ya que es el paquete incluido por defecto.System.out.println((int)2.99);
grabados2
y desde que tomo el valor previo con suelo de piso 10 y entonces, es lo mismo que tomar el techo lejos de 10.MATL , 12 bytes
Pruébalo en línea!
Explicación
El redondeo y la sujeción se realizan simultáneamente de la siguiente manera: el número
x = v/a/70
se compara con cada elemento de la matriz[0 1 ... 9]
. Los números de esa matriz que se excedenx
se convertirán en asteriscos, y el resto serán espacios.fuente
Python2, 32 bytes
guardado 3 + 2 bytes y corregido por un error gracias a Leaky Nun
similar a la respuesta de Neils. Utiliza el hecho de que Python2 hace división entera.
fuente
v=70
ya=1
f=
puede ser eliminadov, a
puede volversev,a
Haskell, 35 bytes
[1..min(ceiling$v/a/70)10]
crea un rango de 1 a la dificultad calculada (una lista vacía para la dificultad 0).a>>b
repite la lista ab
length a
menudo.fuente
Pyke,
139 bytesPruébalo aquí!
Explicación:
fuente
C #,
978987774241 bytesGuardado 10 bytes gracias a Adám
Guardado algunos bytes gracias a Arnauld
fuente
(int)System.Math.Ceiling(v/a/70d)
por(v+69)/(70*a)
... Tenga en cuenta que, además, v / a no puede ser negativo, por lo quec
puede simplificarse mucho porque no necesita verificarlo.Perl,
3532 bytesUse
-E
para activarsay
y dar los argumentos en el orden inverso:Si se permiten argumentos en STDIN, el siguiente es 29 bytes:
fuente
0|
lugar de$-=
? (Pensar que la precedencia del operador podría no ser la correcta ...)0|
convierte un número negativo en un número enorme (que conduce a cero*
s), se$-=
corta a 0 (que conduce a diez*
s), que es lo que necesito aquíR,
68, 5052 bytesrep
implícitamente coloca un min en el número de 0Gracias a @plannapus y @ Anastasiya-Romanova 秀 por detectar mi error.
fuente
f=
1+
despuésmin(
con el fin de obtener los mismos resultadosPyth ,
1713 bytes4 bytes en crédito a Luis Mendo por su algoritmo .
Banco de pruebas.
fuente
Javascript ES6, 48 bytes
fuente
C,
54,51,50, 49 bytesSuponiendo que
v
es positivo o cero ya
positivo, elx < min
caso de sujeción nunca se cumple, ya que no hay forma de que el resultado de la operación del techo pueda ser negativo. Además, las matemáticas enteras en valores no negativos siempre producen el piso del resultado, por lo que agregamos1
para obtener el techo.Esta solución requiere una
write
función, funciona en Linux al menos.Prueba principal:
fuente
(v=v/a/70)
por(v/=a*70)
salva 1 byte.javascript:
8273 bytesfuente
console.log
, regresar está bien. También puede guardar un byte env=>a=>
lugar de(v,a)=>
Dyalog APL , 15 bytes
'*'⍴⍨
el personaje repitió esto muchas veces:10⌊
min (10, ...⎕÷
entrada dividida por70×
setenta veces⎕
entradaTryAPL en línea!
fuente
'*'/⍨(⎕÷70×⎕)>⍳10
Medusa , 18 bytes
Toma entrada en el formato
[a v]
. Pruébalo en línea!Explicación
%
es recíproco, también lo%70
es 1/70.i
es input, como una matriz de dos elementos./%
con entradasi
y%70
reduce la matrizi
por división invertida con valor inicial%70
. En otras palabras, calcula v / (a / (1/70)) , que es igual a v / (70 * a) .M
toma el techo de este valor, ym
toma el máximo de eso y10
.#'*
repite el*
carácter literal que muchas veces.P
imprime el resultado sin comillas.fuente
MATLAB,
3433 bytesDebido a que me gusta mucho este desafío, aquí hay uno para MATLAB (salidas en blanco):
Inspirado por la respuesta de @Luis Mendo. Gracias a @pajonk por guardar un byte.
fuente
[... '']
lugar dechar(...)
. ¿Y realmente necesitas elceil
cuando al final estás comparando con enteros?m4,
136135 bytesDefine una macro
f
que tomav
ya
, y se expande a la salida correcta. La mayor parte del programa es una implementación de techo.fuente
dc,
11010810498 bytesEsto fue una maravilla ya que cortar no es una cosa. Además, dc no manipula cadenas. Realmente estaba esperando una cadena que sería <5 horas de codificación. En el lado positivo, finalmente comencé a escribir construcciones comunes, como for loops. También tuve que formular redondeo / techo, así que gracias por eso.
Invocado en bash:
Reemplazar (arriba) con el código,
v
ya
con sus respectivas contrapartes arriba. Las comillas simples son importantes (de lo contrario, obtienes el historial de bash).Explicado:
Esto probablemente sea más apto para el golf, pero estaba tratando de terminarlo para evitar una optimización prematura.
fuente
[*]n
=>42P
. Cada instancia de10
puede ser reemplazada porI
.[]p
=>IP
Haskell, 35 bytes
Esta solución es tan completamente diferente de la respuesta de Laikoni como lo es para algo tan trivial. Sin embargo, el puntaje (por ahora) es exactamente el mismo.
Esto produce diez estrellas, luego afeita algunas. Fácil de extender a dificultad arbitraria con una lista infinita.
Me las arreglé para afeitarme un byte más. Pero si bien todos los casos de prueba funcionan, esto no debería ser correcto en general.
fuente
TI-Basic, 39 bytes
fuente
PowerShell v2 +, 47 bytes
Algo un puerto de la respuesta JavaScript de @ Neil .
Toma datos
$args
y los divide, luego los divide por70
, y agrega.499
. Como PowerShell realiza el redondeo bancario , esto es efectivamenteceil
con dos puntos decimales de precisión. Si se requiere precisión adicional, agregue tantos9
s adicionales como sea necesario.Junto con el
1..
, esto forma un índice de rango en una cadena. La cadena es'*'*11
, es decir'***********'
. Eso da como resultado una matriz de caracteres, por lo-join
que los unimos nuevamente en una cadena. Esa cadena se deja en la tubería y la salida es implícita. Al igual que la respuesta de Neil, esto efectivamente "sujeta" la salida para que esté entre 1 y 10 estrellas.Banco de pruebas
fuente
Python 3,
6968 bytesNo quería copiar la respuesta de Python 2, así que la mía es un poco más larga.
Guardado 1 byte gracias a Program man
fuente
from math import *
ahorrará un par de bytesimport*
sin espacio.En realidad, 14 bytes
Pruébalo en línea!
Aprovecha el hecho de que 0 vistas y 0 respuestas es imposible, y por lo tanto
ceil(v/a) > 0
.Explicación:
fuente