var QUESTION_ID=92598,OVERRIDE_USER=20260;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/92598/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
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>
Respuestas:
Python, 32 bytes
Función lambda anónima. Dado un entero, x escribe "- ~" abs (x) veces y elimina el primer carácter si x es negativo, luego se agrega un cero al final.
fuente
n
en lugar dex
y'
en lugar de"
:)JavaScript (ES6),
3331 bytesRecursion <built-ins <loops (al menos en este caso). Básicamente no evalúa la entrada:
~
a la cadena;-
a la cadena;Aprovecha este patrón:
fuente
Pyth,
141312 bytes-2 Bytes gracias a @StevenH.
Banco de pruebas
Decidí probar Pyth, así que traduje mi respuesta de Python . Cualquier ayuda bienvenida!
Explicación:
fuente
>0
lugar de<Q0
tW>0Q_+0sm"~-
_<>0Q+0sm"~-
espero que estés de acuerdo conmigo agregando esto a mi solución.C, 46 bytes
A diferencia de la mayoría (¿todas?) Otras respuestas, esta da salida a los operadores
~
y-
una por una.fuente
05AB1E ,
1413 bytesExplicación
Pruébalo en línea!
fuente
Retina,
1917 bytesReemplace el número con unario, con un cero al final. Reemplace cada uno
1
con-~
. Eliminar doble negativo si hay uno.Pruébalo en línea
Todos los casos de prueba a la vez (programa ligeramente modificado para admitir múltiples casos de prueba)
fuente
Perl
38 35 33(23 + 1 para -p) 24-13 gracias a Dada
fuente
-p
lugar de-r
. También puedes deshacerte de esos últimos paréntesis y punto y coma:if$h<0
es suficiente.$h<0&&s;.;
lugar des/.// if $h<0
. (-p
Añade una;
al final del código, así que no hay necesidad de que el último;
des;.;;
Y.a if b
Es más o menos equivalente ab && a
, pero en este caso le ahorra un byte porque se puede quitar el espacio);
también.Dyalog APL , 18 bytes
'0',⍨
carácter cero agregado a0∘>
negatividad (es decir, 1 para números inferiores a 0; 0 para cero y superiores)↓
caido de'-~'⍴⍨
la cadena "~ -" se reformó cíclicamente a la longitud2×
dos veces|
el valor absoluto+
más0∘<
positividad (es decir, 1 para números superiores a 0)TryAPL en línea!
fuente
Haskell, 41 bytes
f n=['-'|n>0]++(tail$[1..abs n]>>"-~")++"0"
Gracias a nimi por 3 bytes
fuente
tail
falla porn=0
. Puedes usardrop 1
en su lugar.f n|n<0=tail.f$abs n|x<-[1..n]>>"-~"=x++"0"
....|n<0=tail$f(-n)|...
.V , 21 bytes
Pruébalo en línea!
V tiene un soporte de número muy limitado, y en realidad no tiene un concepto de números negativos. Esto significa que para admitir negativos (o incluso 0), tenemos que usar algunas soluciones alternativas.
Explicación:
fuente
JavaScript (ES6),
3937 bytesGuardado 2 bytes gracias a @Neil
fuente
Jalea , 10 bytes
Este es un programa completo. Pruébalo en línea!
Cómo funciona
fuente
Java 7,
9579 bytes79 bytes:
Sin golf:
Versión anterior (95 bytes):Uso:
Pruébalo aquí!
Salida:
fuente
Ruby, 34 bytes
fuente
EXCEL:
5533 bytesLa entrada es en forma de poner un número en la celda A1. La fórmula puede ir a cualquier parte excepto a A1.
fuente
T-SQL, 87 bytes
La
x*x+1
condición en la subcadena es suficiente, ya quex^2+1>=2*abs(x)
para todosx
.Como generalmente en SQL, la entrada se almacena en una tabla:
fuente
CJam ,
1814 bytesSe inspiró en la respuesta de Emigna para guardar 4 bytes.
Pruébalo en línea! (Como un conjunto de pruebas separado por salto de línea).
Explicación
fuente
Vim - 31 pulsaciones de teclas
Primero vim golf, prolly se perdió un montón de cosas.
fuente
:s/^-
lugar de:s/-\~/\~-
y enD
lugar ded$
<C-a>
y luego eliminando dos caracteres del final.0i
¿no funciona?0
mueve el cursor al primer carácter en la fila actual. Sin embargo, puede usar 0 como recuento en V.Matlab, 61 bytes
fuente
Pyke,
1413 bytesPruébalo aquí!
fuente
Perl 6 , 25 bytes
Explicación:
fuente
Jalea,
1412 bytes-2 bytes gracias a @Dennis (devuelve 0 en lugar de concatenar "0", haciendo de este un programa completo solamente).
Pruébelo en TryItOnline
¿Cómo?
fuente
> <>, 18 + 3 = 22 bytes
Pruébalo en línea! +3 bytes para que la
-v
bandera inicialice la pila con la entrada. Si asumir que STDIN está vacío está bien, entonces el siguiente es un byte más corto:El programa sigue volteando la entrada
n
según sea necesario hasta que llega a 0, después de lo cual falla.fuente
Octava, 51 bytes
Al principio, copiando descaradamente el enfoque de Matlab por @pajonk y luego modificando algunos detalles, reescribiendo como un "producto externo" entre un vector de unos y los caracteres "- ~" y abusando de la indexación sobre la marcha (o lo que podría ser llamado) nos permite guardar algunos bytes. Todavía me duele un poco que no pueda hacer que la expresión de índice tome menos bytes.
Octave permite un (i1) (i2) o incluso (...) (i1) (i2) para indexar donde Matlab quiera que almacenemos variables entre las indexaciones.
es demasiado largo para describir "saltar primero si". Tiene que haber una mejor manera.
fuente
PseudoD ,
688579521 bytesExplique:
fuente
adquirir e``fijar p a Escribir
)?PHP, 61 bytes
fuente
PHP, 58 bytes
fuente
Laberinto , 25 bytes
Pruébalo en línea!
Explicación
Realmente me gusta el flujo de control en este. La IP se ejecuta en una figura 8 (o en realidad un ∞, supongo) a través del código para reducir la entrada lentamente
0
mientras se imprimen los caracteres correspondientes.El código comienza en la esquina superior izquierda hacia la derecha. El
`
no hace nada ahora.?
lee la entrada y la+
agrega al cero implícito a continuación. Por supuesto, eso tampoco hace nada, pero cuando volvamos a ejecutar este código,?
presionaremos un cero (porque estamos en EOF), y+
luego eliminaremos ese cero.Luego,
#
empuja la profundidad de la pila, simplemente para asegurarse de que haya un valor positivo en la pila para que la IP gire hacia el sur, y la;
descarta nuevamente.El
"
es un no-op y actúa como la rama principal del código. Hay tres casos para distinguir:Si el valor actual es positivo, la IP gira a la derecha (oeste) y completa una ronda del bucle izquierdo:
Si el valor actual es negativo, la IP gira a la izquierda (este) y se ejecuta el siguiente código:
Tenga en cuenta que estos dos se alternarán (ya que ambos cambian el signo de la entrada) hasta que el valor de entrada se reduzca a cero. En ese punto...
!
y luego gira hacia el oeste@
.!
imprime0
y@
finaliza el programa.fuente
GolfScript ,
302420 bytes~."-~"\abs*\0<{(;}*0
Entrada:
-5
Salida:
-5 = ~-~-~-~-~0
Explicación
Pruébalo en línea!
fuente
2 =
, solo el-~-~0
.{(;}*0
lugar de{(;}{}if 0
.