Antecedentes:
A menudo encuentro que, cuando navego en un sitio de Stackexchange, empiezo a preguntarme cómo las personas obtienen la cantidad de reputación que tienen. Sé que siempre puedo contar con Codegolf SE para resolver mis problemas, así que aquí está:
Cree un programa que acepte un número entero positivo que represente la reputación de una persona. Ignoraremos las recompensas y diremos que estas son las únicas formas de ganar / perder repeticiones en SE (tabla completa aquí ):
- Cada cuenta comienza con 1 repetición y no puede ir por debajo de eso
- Tu pregunta ha sido votada = +5
- Tu respuesta ha sido votada = +10
- Su pregunta es rechazada = -2
- Su respuesta es downvoted = -2
- Vota abajo una respuesta = -1
- Su respuesta es aceptada = +15
- Aceptas una respuesta = +2
Su programa debe determinar cuántas de esas acciones ocurrieron en la cuenta de ese usuario para llegar al representante que tienen. Debe determinar el menor número de acciones para llegar a este nivel de representación. Ejemplos:
Entrada: 11 Salida: 1 respuesta de voto positivo
Entrada: 93 Salida: 6 respuestas aceptadas, 1 respuesta aceptada
En estos ejemplos, cuando digo "voto positivo", significa que el queston de esa persona fue votado positivamente. Cuando digo 'respuesta rechazada', significa que rechazaron la respuesta de otra persona.
Reglas:
code-golf , por lo que gana el código más corto que pueda hacer esto.
Respuestas:
Golfscript,
162144 bytesCómo funciona
La idea general es exactamente la misma que en mi respuesta Bash .
fuente
Bash,
247202192 bytesCómo funciona
Después de que el comando sed hace su trabajo, se ejecuta el siguiente script bash:
Para obtener la solución óptima (número mínimo de eventos para obtener
n
reputación), es suficiente calcular el número de respuestas aceptadas (a
) necesarias para llegar a una reputación por debajo de 16 (1 respuesta aceptada) y manejar el residuo de la siguiente manera:fuente
-2
y-1
downvotes.Perl,
500263256208 bytesGuión
rep.pl
:Uso
La entrada se espera como un entero positivo, dado como argumento para el script. Las diferentes acciones se generan como líneas.
Pruebas
Sin golf
Versión antigua
Ediciones
S
ya no es necesaria.E
ya no es necesaria.fuente
R,
454421Gracias a Dennis por su respuesta que me ayudó mucho.
Versión sin golf
fuente
JavaScript -
270237227206192 caracteresExactamente tantos caracteres como Bash (¡sí!), Y supera a Python y Perl :) Reduce la reputación hasta
14
después de lo cual toma, después de lo cual toma las otras acciones necesarias, completamente al estilo de bucle.EDITAR 1: Convierte
\n
s a,
s y convierte unif
bloque a ternario, y mejor piso con nombres cortos.EDIT 2: Muchas gracias a Alconja que me ayudó a reducir 11 caracteres. Después de lo cual hice algunas correcciones más para reducir 2 caracteres más.
Versión antigua:
Prueba:
ENTRADA:
42
SALIDA:
ENTRADA:
1337
SALIDA:
Código sin golf:
fuente
function name(args){}
conviertename=(args)=>{}
y, por lo tanto, ahorra muchos bytes.q
una vez, por lo que puede incorporarla. Además, puede soltar lac
variable y hacer un enr%=15
lugar der-=c*15
. Debería llevarte a 195 caracteres (r=prompt()-1,a="1answer ",v="vote,";s=(r/15|0)+"answer accept,",r%=15;if(r>9)s+=a+"+"+v,r-=10;if(r>2)s+="1question +"+v,r-=5;r>0?s+=a+"accepted,":0;if(r<-1)s+=a+"-"+v;r&1?s+=a+"-voted":0;alert(s)
).Game Maker Language, 276
fuente
C # - 391
Un poco largo, y no lo he probado a fondo (mucho). :)
Sin golf - NUEVO
Sin golf - ANTIGUO (409)
Prueba:
fuente
Python -
213207¡Te maldigo nombres largos de funciones!
Ejemplo: (ignore la nueva línea final)
fuente
EOF
. ¿Puede indicarme un compilador que funcione (y que debería conservar para referencia futura)?C ++, 276 (316 w / incluye)
Compila con GCC, con advertencias. Ejemplo:
Siéntase libre de portar esto a un idioma que no requiera declaraciones de tipo y publicarlo como propio.
fuente
JavaScript -
273256235Cálculo y rendimiento combinados, y más golf hasta un total de 287.
Editar: sacó algunas variables por unas pocas más cortas.
Se eliminó Math.Floor para el enfoque | 0.
Se movió algo de inicialización al parámetro prompt (), se eliminaron algunos corchetes, se alertó con el agregado final de la cadena.
fuente
prompt
y no podrá codificar el valor.Python3, 188B
Uso:
python3 score.py <ret> 11 <ret>
donde este script se guarda como score.py.Salida de muestra:
fuente