var QUESTION_ID=49876;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),e.has_more?getAnswers():process()}})}function shouldHaveHeading(e){var a=!1,r=e.body_markdown.split("\n");try{a|=/^#/.test(e.body_markdown),a|=["-","="].indexOf(r[1][0])>-1,a&=LANGUAGE_REG.test(e.body_markdown)}catch(n){}return a}function shouldHaveScore(e){var a=!1;try{a|=SIZE_REG.test(e.body_markdown.split("\n")[0])}catch(r){}return a}function getAuthorName(e){return e.owner.display_name}function process(){answers=answers.filter(shouldHaveScore).filter(shouldHaveHeading),answers.sort(function(e,a){var r=+(e.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0],n=+(a.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0];return r-n});var e={},a=1,r=null,n=1;answers.forEach(function(s){var t=s.body_markdown.split("\n")[0],o=jQuery("#answer-template").html(),l=(t.match(NUMBER_REG)[0],(t.match(SIZE_REG)||[0])[0]),c=t.match(LANGUAGE_REG)[1],i=getAuthorName(s);l!=r&&(n=a),r=l,++a,o=o.replace("{{PLACE}}",n+".").replace("{{NAME}}",i).replace("{{LANGUAGE}}",c).replace("{{SIZE}}",l).replace("{{LINK}}",s.share_link),o=jQuery(o),jQuery("#answers").append(o),e[c]=e[c]||{lang:c,user:i,size:l,link:s.share_link}});var s=[];for(var t in e)e.hasOwnProperty(t)&&s.push(e[t]);s.sort(function(e,a){return e.lang>a.lang?1:e.lang<a.lang?-1:0});for(var o=0;o<s.length;++o){var l=jQuery("#language-template").html(),t=s[o];l=l.replace("{{LANGUAGE}}",t.lang).replace("{{NAME}}",t.user).replace("{{SIZE}}",t.size).replace("{{LINK}}",t.link),l=jQuery(l),jQuery("#languages").append(l)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",answers=[],page=1;getAnswers();var SIZE_REG=/\d+(?=[^\d&]*(?:<(?:s>[^&]*<\/s>|[^&]+>)[^\d&]*)*$)/,NUMBER_REG=/\d+/,LANGUAGE_REG=/^#*\s*([^,]+)/;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"><div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table></div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table></div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody></table><table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody></table>
A+
yA-
? No veo por qué los ignoramos.+
Respuestas:
Python 2,
727062 bytesEsta es una función anónima que toma un int y devuelve la calificación como una cadena.
(gracias a @ MartinBüttner, @grc y @TheNumberOne por los consejos)
fuente
"EDCB"[n/10-6]
->chr(75-n/10)
CJam,
34 3332 bytesBien, he intentado múltiples enfoques ahora y no puedo obtener esto por debajo de 33, así que aquí va la explicación:
ACTUALIZACIÓN : 1 byte guardado gracias a un puntero de Dennis
Pruébalo en línea aquí
fuente
s
?<
Character String -
empuja una cuerdaRetina, 43 + 15 = 58 bytes
Retina es un lenguaje de expresiones regulares creado por Martin Büttner, donde los archivos impares son la expresión regular con la que deben coincidir, y los archivos pares son con los que reemplazarlos. Cada línea es un archivo separado, así que agregué 15 bytes por cada archivo adicional.
Explicación
Comienza haciendo cualquier cosa con 3 o más dígitos y una A. Agrega un
-
si es un número de dos dígitos que termina con 0, 1 o 2, y+
si termina con 7, 8 o 9. Los números se asignan a su calificación (por ejemplo, un número que comienza con 9 recibe una B). Cualquier número sobrante es automáticamente una F.Desafortunadamente,Actualización: la versión 0.5.0 tiene salida intermedia desactivada por defecto, lo que me permite guardar algunos bytes.;`
debe anteponerse a todos menos a la última expresión regular para suprimir la salida intermedia.fuente
\d.*
coincide y reemplaza toda la cadena,+
incluida.C, 99 bytes
Soy nuevo aquí, espero seguir las reglas.
Esta función toma la marca como parámetro y devuelve la calificación como una cadena terminada en NULL.
Explicación
Espacio en blanco agregado:
Las variables globales se inicializan automáticamente a cero, por lo que b se llena con NULL. Como solo se tocan los dos primeros caracteres, solo tenemos que preocuparnos de poner un NULL en b [1] si la calificación tiene solo un carácter. Este NULL se inserta al comienzo de la función. El parámetro n es implícitamente int. Si la calificación es inferior a 60, se establece en 'F', si es superior a 99 se establece en 'A'. En los otros casos, el grado base está dado por
'E' - (n - 60) / 10
, lo que se simplifica a75 - n / 10
.n % 10
obtiene el dígito de las unidades de la marca. Si es menor que 3, entonces se agrega a -, si es mayor que 6 se agrega a +, de lo contrario se anula b [1] (que ya estaba).Casos de prueba
fuente
Pyth, 33 bytes
Pruébelo en línea: Demostración o conjunto de pruebas
Explicación:
fuente
> <> (Pescado),
7871 bytesMétodo:
x,y,z
de la entrada. Si un personaje no está presente, el valor de sus variables será-1
implícitamente. (ord(c)
marcará el punto de código del personajec
)z > 0
(entrada de 3 dígitos) imprimeA
y sale.x < ord('6') or y < 0
(entrada <60) imprimeF
y sale.123 - x
.y < ord('4') print
-` y salir.y > ord('6') print
+ `y salir.fuente
C,
6765Sorprendentemente, esto está bastante cerca de la solución de Python.
Pero para que este programa llegara a ser tan corto, se tuvieron que hacer sacrificios:
Si se imprime una
F
o una , ni siquiera mira los otros argumentos pasados. Este es un truco bastante desagradable.A
printf
Si
(i%10+1)/4
se evalúa como1
(sin+
o-
deben ser agregados al grado), el%s
formateador recibe un puntero a un\0
byte, por lo que no se imprime nada. También es bastante divertido, porque no sabía que podía tomar la dirección de un literal de cadena indexado. (por ejemplo&"string"[i]
) ( editar : ¡"string"+i
es aún más corto ! Gracias @nutki)Aquí la salida del programa para los números del 57 al 102. Lo convertí en un hexdump, por lo que podemos estar seguros de que no
\0
se han impreso bytes extraños .El
main
método usado:fuente
&"string"[i]
es innecesario ya que es equivalente a más corto"string"+i
con el que puede guardar 2 bytes.CJam,
41393734 bytesEsto es demasiado tiempo, pero no creo que vaya a jugar más al golf por ahora.
Pruébalo aquí. O ejecute todos los casos de prueba aquí.
Tres bytes guardados por Optimizer.
Explicación
(Ligeramente anticuado)
fuente
GNU sed, 73 + 1 = 74 bytes
El + 1 es para el parámetro -r.
fuente
Python 2,
94888469 bytesfuente
JavaScript (ES6), 66 bytes
Derecho.
fuente
R,
10710599 bytesNo es un esfuerzo muy bueno, me temo, pero intentaré jugarlo más tarde.
Editar cayó un par de
if
s. Se corrigió el caso y un resultado incorrecto para 100.Ahora deshacerse del. Se deshizo delifelse
sifelse
s.fuente
LETTERS
más queletters
.Perl,
6662 bytesEsto probablemente se puede jugar más al golf. También una forma diferente podría ser mejor.
+1 para
-p
Corre con:
fuente
-p
y soltar elsay
?Javascript (ES6),
7879 bytesEsta realmente no es la opción más inteligente, pero hice lo que pude.
Simplemente pase la calificación como una cadena , y devolverá su letra de calificación.
La parte de la cuerda es muy importante.
Puedes consultar un caso de prueba aquí:
Si el espacio adicional después de la carta no está permitido, lo eliminaré con mucho gusto.No fue! Esto aumentó mi código en 1 byte, pero nada (demasiado) serio.fuente
One newline after output is fine, but keep it consistent.
". Creo que es lo suficientemente consistente.C #,
14312711288 bytesTraté de ser inteligente haciendo modificaciones de número ASCII, ¡pero parece que no estaba solo!
Gracias a Tim por consejos sobre listas en lugar de ifs.
Gracias a DarcyThomas por señalar que podría usar operadores ternarios anidados.
fuente
[item1,item2][condition]
. Si la condición es Verdadera, da el segundo elemento, si es Falso, el primero.return <condition> ? <true result> : <false result>
tenga en cuenta que también puedereturn <condition> ? <true result> : <condition> ? <2nd true result> : < 2nd false result>
Haskell, 78 bytes
La primera línea se siente derrochadora, cuesta 14 bytes, pero no podría encontrar una versión más corta sin ella.
Explicación
El operador
#
es una abreviatura para crear n copias de su segundo argumento. La listaa
es una lista infinita de cadenas "A". La función sef
indexa en una lista de todos los grados para n = 0,1, ... La comprensión de la lista construye la "parte media" de esta lista (grados E a B);g
es un Char único que se antepone a la Cadenas
(que puede estar vacía).Uso
fuente
C, 102 bytes
}
Uso
fuente
dc, 52
Salida
fuente
TI-Basic,
797476 Bytesfuente
1+
TI-BASIC,
696866 bytesTI-BASIC no es bueno para la manipulación de cadenas.
Ingrese en la pantalla de inicio de la calculadora, en forma de [número]: [nombre del programa].
Formateado:
Esto probablemente se puede jugar más golf.
fuente
C #, 82 bytes
Aquí hay un violín con algunos casos de prueba.
fuente
JavaScript (ES6),
8683 bytesLo que realmente se come a los personajes es la
String.fromCharCode
condición +/- ... Sospecho firmemente que hay una manera inteligente de acortar al menos uno de ellos.fuente
~~(.1*-n+75.9)
->75.9-n/10|0
PHP5.5, 73 bytes
Una vez más, no es el más corto.
¡Pero funciona!
Lo he clasificado en PHP5.5 en lugar de solo PHP ya que usa una sintaxis que solo es válida para PHP5.5 y PHP5.6.
Puede leer sobre la desreferenciación de cadenas y matrices en el manual:
http://php.net/manual/en/migration55.new-features.php
fuente
Perl, 52
fuente
Rubí, 58 Bytes
No podía creer que no haya Ruby aquí. Reflexionando es bastante similar a algunos que ya están aquí, pero de todos modos:
Pruébalo aquí
fuente
Excel, 100 bytes
fuente