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>
Réponses:
Python, 32 octets
Fonction lambda anonyme. Étant donné un entier x écrit "- ~" abs (x) fois et supprime le premier caractère si x est négatif, un zéro est ajouté à la fin.
la source
n
à la place dex
et'
à la place de"
:)JavaScript (ES6),
3331 octetsRécursivité <intégrés <boucles <(du moins dans ce cas). Fondamentalement non l'évaluation de l'entrée:
~
à la chaîne;-
à la chaîne;Profite de ce modèle:
la source
Pyth,
141312 octets-2 octets grâce à @StevenH.
suite de tests
Décidé d'essayer Pyth, j'ai donc traduit ma réponse en python . Toute aide bienvenue!
Explication:
la source
>0
au lieu de<Q0
tW>0Q_+0sm"~-
_<>0Q+0sm"~-
J'espère que votre accord avec moi d'ajouter ceci à ma solution.C, 46 octets
Contrairement à la plupart (tous?) D' autres réponses, celui - ci sort les opérateurs
~
et-
un par un.la source
05AB1E ,
14 à13 octetsExplication
Essayez-le en ligne!
la source
Retina,
1917 octetsRemplacez le nombre par unary, avec un zéro à la fin. Remplacez chacun
1
par-~
. Supprimer le double négatif s'il y en a un.Essayez-le en ligne
Tous les cas de test à la fois (programme légèrement modifié pour prendre en charge plusieurs cas de test)
la source
Perl
38 35 33(23 + 1 pour -p) 24-13 grâce à Dada
la source
-p
au lieu de-r
. Aussi, vous pouvez vous débarrasser de ces dernières parenthèses et points-virgules: celaif$h<0
suffit.$h<0&&s;.;
au lieu des/.// if $h<0
. (-p
ajoute un;
à la fin du code, donc pas besoin du dernier;
des;.;;
. Eta if b
est à peu près équivalent àb && a
, mais dans ce cas, cela vous économise un octet car vous pouvez supprimer l'espace);
aussi.Dyalog APL , 18 octets
'0',⍨
caractère zéro ajouté à0∘>
caractère négatif (c.-à-d. 1 pour les nombres inférieurs à 0; 0 pour le zéro et le plus élevé)↓
est tombé de'-~'⍴⍨
la chaîne "~ -" cycliquement remise en forme2×
Deux fois|
la valeur absolue+
plus0∘<
positivité (1 pour les nombres supérieurs à 0)TryAPL en ligne!
la source
Haskell, 41 octets
f n=['-'|n>0]++(tail$[1..abs n]>>"-~")++"0"
Merci à nimi pour 3 octets
la source
tail
échoue pourn=0
. Vous pouvez utiliser à ladrop 1
place.f n|n<0=tail.f$abs n|x<-[1..n]>>"-~"=x++"0"
....|n<0=tail$f(-n)|...
.V , 21 octets
Essayez-le en ligne!
V a un support de nombre très limité, et il n’a en fait aucune notion de nombre négatif. Cela signifie que pour supporter les négatifs (ou même 0), nous devons utiliser certaines solutions de contournement.
Explication:
la source
JavaScript (ES6),
3937 octets2 octets sauvés grâce à @Neil
la source
Gelée , 10 octets
Ceci est un programme complet. Essayez-le en ligne!
Comment ça marche
la source
Java 7,
95 à79 octets79 octets:
Ungolfed:
Ancienne version (95 octets):Usage:
Essayez-le ici!
Sortie:
la source
Ruby, 34 octets
la source
EXCEL:
5533 octetsLa saisie consiste à mettre un nombre dans la cellule A1. La formule peut aller n'importe où sauf A1.
la source
T-SQL, 87 octets
La
x*x+1
condition dans la sous-chaîne est suffisante, carx^2+1>=2*abs(x)
pour tousx
.Comme d'habitude en SQL, l'entrée est stockée dans une table:
la source
CJam ,
1814 octetsJ'ai pris l'inspiration de la réponse d' Emigna pour économiser 4 octets.
Essayez-le en ligne! (En tant que suite de tests séparés par un saut de ligne.)
Explication
la source
Vim - 31 frappes
First vim golf, a malheureusement manqué une tonne de choses.
la source
:s/^-
au lieu:s/-\~/\~-
et à laD
place ded$
<C-a>
, puis de supprimer deux caractères de la fin.0i
ça ne marche pas?0
déplace le curseur sur le premier caractère de la ligne en cours. Vous pouvez toutefois utiliser 0 comme un compte dans V.Matlab, 61 octets
la source
Pyke,
14 à13 octetsEssayez-le ici!
la source
Perl 6 , 25 octets
Explication:
la source
Gelée,
14 à12 octets-2 octets grâce à @Dennis (renvoie 0 plutôt que de concaténer "0", ce qui en fait un programme complet uniquement.)
Testez-le sur TryItOnline
Comment?
la source
> <>, 18 + 3 = 22 octets
Essayez-le en ligne! +3 octets pour le
-v
drapeau pour initialiser la pile avec l'entrée. Si supposer que STDIN est vide est acceptable, alors l'octet suivant est plus court:Le programme continue à retourner l'entrée
n
si nécessaire jusqu'à ce qu'il atteigne 0, après quoi une erreur est générée.la source
Octave, 51 octets
Copiez d'abord ouvertement l'approche Matlab par @pajonk, puis modifiez certains détails, réécrivez en tant que "produit extérieur" entre un vecteur de uns et les caractères "- ~" et abusez de l'indexation à la volée (ou de ce qu'elle pourrait être). appelé) nous permet d’économiser quelques octets. Cela me fait encore mal de ne pas pouvoir obtenir que l'expression d'index prenne moins d'octets.
Octave permet à (i1) (i2) ou même à (...) (i1) (i2) d'indexer où Matlab voudrait que nous stockions des variables entre les indexations.
est beaucoup trop long pour décrire "sauter d'abord si". Il doit y avoir un meilleur moyen.
la source
PseudoD ,
688579521 octetsExplique:
la source
adquirir e``fijar p a Escribir
)?PHP, 61 octets
la source
PHP, 58 octets
la source
Labyrinthe , 25 octets
Essayez-le en ligne!
Explication
J'aime beaucoup le flux de contrôle dans celui-ci. L'adresse IP se présente sous la forme d'un chiffre 8 (ou en réalité d'un, je suppose) à travers le code pour réduire lentement l'entrée à l'
0
impression des caractères correspondants.Le code commence dans le coin supérieur gauche en allant à droite. Le
`
ne fait rien pour le moment.?
lit l'entrée et l'+
ajoute au zéro implicite ci-dessous. Bien sûr, cela ne fait rien non plus, mais lorsque nous repasserons sur ce code,?
nous appuierons sur un zéro (car nous en sommes à l'EOF), puis+
nous nous débarrasserons de ce zéro.Ensuite, la
#
profondeur de la pile est augmentée, simplement pour s’assurer qu’il ya une valeur positive sur la pile pour que l’IP se retourne au sud, et la;
rejette à nouveau.Le
"
est un no-op et agit comme la branche principale du code. Il y a trois cas à distinguer:Si la valeur actuelle est positive, l’IP tourne à droite (ouest) et termine un tour de la boucle de gauche:
Si la valeur actuelle est négative, l'IP tourne à gauche (est) et le code suivant est exécuté:
Notez que ces deux fonctions alternent (car les deux modifient le signe de l'entrée) jusqu'à ce que la valeur d'entrée soit réduite à zéro. À ce moment...
!
, puis tourne à l’ouest sur le@
.!
imprime le0
et@
termine le programme.la source
GolfScript ,
302420 octets~."-~"\abs*\0<{(;}*0
Contribution:
-5
Sortie:
-5 = ~-~-~-~-~0
Explication
Essayez-le en ligne!
la source
2 =
, mais le-~-~0
.{(;}*0
au lieu de{(;}{}if 0
.