var QUESTION_ID=92138,OVERRIDE_USER=58717;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/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>
E
en entrée et faire unE
avecE
s?Réponses:
05AB1E ,
1614 octetsExplication
Essayez-le en ligne!
Enregistré 4 octets grâce à Adnan.
la source
©
registre: p?Í×s.øU×S»X»D»Xr»
.Python,
535155 octets+4 octets grâce à @nimi
fonction lambda anonyme, pour l'appeler, écrivez
f=
avant. Exemple:alternative, 53 octets
ancienne version avec le cas particulier sans entrée,
696563 octetsyay pour changer les exigences à mi-défi ...
la source
2
dans votre exemple) est la longueur totale de la ligne, y compris les coins, donc la bonne entrée pour votre forme estf(4,1 ...)
.C,
167161159 octetsOuais.
Essayez-le sur Ideone, avec quelques cas de test
la source
Rubis,
544542 octetsIl s'agit d'une fonction anonyme qui prend les différentes parties de l'entrée en paramètres séparés et renvoie le résultat sous forme de chaîne complète.
Par exemple,
impressions
la source
Javascript (ES6), 64 octets
Exemple
la source
{ "message": "Script error.", "filename": "", "lineno": 0, "colno": 0 }
lorsqu'il est exécuté en ligne..repeat()
V , 18 octets
Essayez-le en ligne!
la source
R, 80 octets
Assez répétitif:
Non golfé:
la source
Pyke,
1615 octetsEssayez-le ici!
la source
Pyth, 19 octets
Un programme qui prend des entrées séparées par des sauts de ligne sur STDIN du caractère de coin, du nombre de caractères horizontaux, du caractère horizontal, du nombre de caractères verticaux et du caractère vertical, et imprime le résultat.
Essayez-le en ligne
Comment ça fonctionne
la source
MATLAB,
95 92 91 8581 octetsFonction MATLAB 'E'. (modifier: ne fonctionne pas sur Octave)
Et non golfé:
La fonction doit être appelée comme:
Qui reviendra:
Cela peut probablement être un peu simplifié, je vais continuer à y travailler. Je n'aime pas avoir la déclaration de fonction entière pour obtenir l'entrée, alors je vais voir si je peux l'améliorer.
Enregistrement de 3 octets en simplifiant la génération de la première ligne pour créer d'abord la ligne sans coins, puis ajouter les coins car cela réduit le nombre de fois où l'indexation est requise.
Un autre octet enregistré en commençant par le premier coin.
6 octets supplémentaires en remplaçant l'
repmat(a,3,1)
appel par[a;a;a]
.4 octets enregistrés en utilisant
a
sans initialisation spécifique (c'est déjà déclaré dans la déclaration de fonction) - merci @LuisMendola source
a=[c a c]
là-dedans, mais je l'ai supprimé pour réduire les choses, car normalement, vous ne pouvez pas indexer l'accès à une variable inexistante et la créer dans le processus. J'ai oublié qu'il s'agissait d'une fonction, ellea
est donc déjà déclarée dans la déclaration de fonction comme valeur de retour. Merci :)Perl, 40 + 1 (
-n
) = 41 octetsMerci à @Ton Hospel pour avoir économisé 14 octets et permis au programme de fonctionner avec une entrée supérieure à 10.
Avoir besoin
-n
ainsi que-E
(ou-M5.010
) pour fonctionner. Par exemple :la source
< 10
en mettant/(.)(.)/;$,=$' x<>;say+($1.$2x(<>-2).$1.$/)x3
un fichier (car il utilise$'
) et en appelant avecperl -M5.010 -n prog.pl <<< '^!S\n4\n9'
(utilisez de vraies nouvelles lignes) qui compte pour 48 octets (2 supplémentaires handicap car il ne peut pas être combiné avec-e
)>10
.. Excellent travail avec le format d'entrée, merci.perl -nE '/.$/;$,=$/.<>x<>;say+($`.$&x(<>-2).$`)x3' <<< '^$\n!\n4\n9'
est de 41 octets (pas plus$'
) et se débarrasse également de la nouvelle ligne traînante parasiteDyalog APL ,
3129 octetsDemande le caractère horizontal, la largeur, le caractère de jonction, la hauteur, le caractère vertical - dans cet ordre.
⎕⍴⍞
saisissez le caractère horizontal et répétez les temps de largeur d'entrée ( ⍵ ci-dessous)⍞{
...}
caractère de jonction d'entrée qui sera ⍺ dans la fonction ...∊⍺⍵⍺
aplatir [[jonction], [horizontales], [jonction]]⊂
encapsuler afin qu'il puisse faire partie d'une liste(
...),
ajouter ...h←⎕
hauteur d'entrée⍞⍴⍨
saisissez le caractère vertical et répétez-le plusieurs fois↑
faire la liste des chaînes dans une table de caractères⊂
encapsuler (afin qu'il puisse être répété dans son ensemble)3/
répéter trois fois⍪/
concaténer les trois pièces verticalement(Cela les encapsule aussi, nous devons donc ...)
⊃
supprimer l'encapsulationh↓
déposer les premiers h (rangées)TryAPL en ligne!
la source
C, 130 octets
Usage:
Production
la source
define
s et les ajouter en tant quef(C,O,P,S,_,D,o){W;E;W;E;W;}
sauvegarde un octet.C #, 108 octets
Fonction anonyme qui génère chaque ligne horizontale et verticale et crée la sortie finale.
Fonction non golfée:
Programme complet avec cas de test:
la source
MATL , 15 octets
Merci à @muddyfish pour une correction
Essayez-le en ligne!
Explication
Le contenu de la pile après chaque étape est indiqué pour plus de clarté, en utilisant le premier exemple du défi.
la source
Bash + coreutils, 105 octets
En supposant que le fichier dans lequel il est stocké est nommé
A.sh
, l'utilisation serait:Les
--
sont nécessaires, juste au cas où l'une des entrées de caractères se trouve être un-
, etprintf
apparemment ne gère pas les tirets au début d'une chaîne très agréable sans les doubles tirets.Explication
En supposant que l'entrée est
5 2 + * |
...$3
printf -- "$4%.0s" $(seq $1)
$3printf "\n$5%.0s" $(seq $2)
Créez le premier segment horizontal et le segment vertical tous ensemble. Il en résulterait:
printf -- "$3
printf -- "$4%.0s" $(seq $1)
$3printf "\n$5%.0s" $(seq $2)
%.0s\n" {1..3}Répétez les temps partiels créés précédemment
3
. Cela se traduit désormais par:printf -- "$3
printf -- "$4%.0s" $(seq $1)
$3printf "\n$5%.0s" $(seq $2)
%.0s\n" {1..3}|sed -n 1,$(($2*2+3))pEnfin, dirigez la sortie précédente vers
sed
pour vous débarrasser des 2 derniers segments de ligne en ne sortant que les premières<Vertical Segment Length>*2+3
lignes de laE
. Nous obtenons enfin ce queE
nous voulons:la source
PowerShell v2 +,
6059 octetsPrend l'entrée en tant qu'arguments de ligne de commande individuels. Construit la chaîne horizontale, la stocke dans
$x
pour une utilisation ultérieure, puis la forme dans un tableau avec l'opérateur virgule,
. Effectue la concaténation du tableau (c'est-à-dire l'ajout d'éléments à la fin) de la$d
formule dans un tableau d'$b
éléments. Cela, à son tour, est formulé dans un tableau de deux éléments avec un autre opérateur virgule, et est laissé sur le pipeline. Ensuite, l'horizontale$x
est laissée sur le pipeline. Abuse le formatage par défaut deWrite-Output
pour mettre une nouvelle ligne entre les éléments.Exemple
la source
Python 3, 60 octets
Une fonction
Cas de test
la source
Brainf * ck, 147 octets
Prend l'entrée de stdin comme les 5 premiers caractères entrés. Les deux premiers ont 48 soustraits de leur code ASCII, donc 0-9 se comportent comme prévu. Pour les nombres> 9, ajoutez 48 au nombre et utilisez le caractère correspondant. Les trois autres personnages sont tels que spécifiés dans le défi.
Je suis sûr que ce n'est pas la solution optimale mais la vie est trop courte pour faire du golf brainf * ck.
Avec commentaires:
Exemple d'exécution:
la source
PHP, 97 octets
pas de boucle, seulement des builtins.
Courez avec
php -r '<code>' <parameters>
.la source
Java 7,
205129 octets-76 octets grâce à un inconnu anonyme.
PS: N'allez pas modifier les messages d'autres personnes la prochaine fois. Si vous avez quelque chose à jouer au golf, veuillez le laisser comme un commentaire, ou s'il utilise une approche complètement différente, vous pouvez faire votre propre réponse. Merci encore d'avoir joué à tous ces octets, qui que vous soyez.
Cas non testés et testés:
Essayez-le ici.
Production:
la source
Raquette 124 octets
Forme plus lisible:
Essai:
la source
C ++, 121 octets
Non golfé:
En C ++, il n'est pas permis de déclarer des fonctions sans type comme en C. Mais les macros qui se comportent comme une fonction sont totalement possibles. Notez également que la version non golfée ne sera pas compilée jusqu'à ce que vous ajoutiez un "\" à chaque ligne de la macro, sauf la dernière. Vous pouvez enregistrer deux octets supplémentaires en supprimant le {}, mais vous ne pouvez pas utiliser la macro deux fois de suite.
Usage:
Production:
Essayez-le en ligne
la source
CJam , 23 octets
Essayez-le en ligne!
L'entrée est dans l'ordre donné, mais doit être séparée par des espaces au lieu d'utiliser une virgule. Une partie de la difficulté consiste à obtenir la saisie du bon ordre pour l' opération de jointure
*
de CJam ; à titre de comparaison, réorganiser l'entrée pourrait économiser 4 octets .Si les entrées sont doublées,
A B C D E
le programme fonctionne comme ceci:la source
Lua (5.2), 144 octets
Essayez-le en ligne! (Terrain de codage)
Il devrait sortir quelque chose comme ça en ce moment:
Propre entrée:
7 2 + l @
Vous pouvez changer l'entrée dans le projet-> options de compilation et y changer les valeurs, chaque valeur comme dans l'exemple mais pas séparée par des virgules mais par des espaces.
la source
QBIC, 44 octets
Explication
la source
PHP, 94 octets
Format d'entrée d'un tableau dans le même ordre que la chaîne suggérée
la source
,"\n"
au lieu de."\n"
, vous pouvez supprimer les parens pour le ternaire.for($h++;$i<=2*$h;)
et$i++%$h
enregistre un autre octet.$v-1
donne seulement 3 caractères horizontaux pour[5,2,+,|,-]
. Nombre de caractères horizontaux, sans compter les caractères des bords gauche et droit