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
como entrada e fazer umE
comE
s?Respostas:
05AB1E ,
1614 bytesExplicação
Experimente online!
Guardado 4 bytes graças a Adnan.
fonte
©
registro: p?Í×s.øU×S»X»D»Xr»
.Python,
535155 Bytes+4 bytes graças a @nimi
função lambda anônima, para chamá-la, escreva
f=
antes dela. Exemplo:alternativa, 53 bytes
versão antiga com o caso especial de não entrada,
696563 bytesyay para mudar os requisitos no meio do desafio ...
fonte
2
no seu exemplo) é o comprimento total da linha, incluindo os cantos, portanto a entrada correta para sua forma éf(4,1 ...)
.C,
167161159 bytesSim.
Experimente no Ideone, com alguns casos de teste
fonte
Ruby,
544542 bytesÉ uma função anônima que toma a parte diferente da entrada como parâmetros separados e retorna o resultado como uma sequência completa.
Por exemplo,
impressões
fonte
Javascript (ES6), 64 bytes
Exemplo
fonte
{ "message": "Script error.", "filename": "", "lineno": 0, "colno": 0 }
quando executado em linha..repeat()
V , 18 bytes
Experimente online!
fonte
R, 80 bytes
Muito repetitivo:
Ungolfed:
fonte
Pyke,
1615 bytesExperimente aqui!
fonte
Pitão, 19 bytes
Um programa que recebe entrada separada por nova linha em STDIN do caractere de canto, número de caracteres horizontais, caractere horizontal, número de caracteres verticais e caractere vertical e imprime o resultado.
Experimente online
Como funciona
fonte
MATLAB,
95 92 91 8581 bytesFunção MATLAB 'E'. (editar: não funciona no Octave)
E não destruído:
A função deve ser chamada como:
O qual retornará:
Provavelmente isso pode ser um pouco simplificado, continuarei trabalhando nisso. Eu não gosto de ter toda a declaração de função para obter a entrada, então verei se posso melhorar isso.
Salva 3 bytes, simplificando a geração da primeira linha para criar a linha sem cantos e depois adicionar os cantos, pois isso reduz o número de vezes que a indexação é necessária.
Outro byte salvo, começando com o primeiro canto.
Mais 6 bytes substituindo a
repmat(a,3,1)
chamada por[a;a;a]
.Salva 4 bytes usando
a
sem inicialização específica (já está declarada na declaração da função) - obrigado @LuisMendofonte
a=[c a c]
lá, mas o removi para diminuir as coisas, pois normalmente você não pode indexar o acesso a uma variável inexistente e criá-la no processo. Esqueci que essa era uma função e, portanto,a
já está declarada na declaração da função como o valor de retorno. Obrigado :)Perl, 40 + 1 (
-n
) = 41 bytesAgradecemos ao @Ton Hospel por salvar 14 bytes e permitir que o programa funcione com entradas maiores que 10.
Precisa
-n
e-E
(ou-M5.010
) para executar. Por exemplo :fonte
< 10
colocando/(.)(.)/;$,=$' x<>;say+($1.$2x(<>-2).$1.$/)x3
um arquivo (já que ele usa$'
) e ligando comperl -M5.010 -n prog.pl <<< '^!S\n4\n9'
(use novas linhas reais) que conta como 48 bytes (2 extras desvantagem, uma vez que não pode ser combinada com-e
)>10
. Ótimo trabalho com o formato de entrada, obrigado.perl -nE '/.$/;$,=$/.<>x<>;say+($`.$&x(<>-2).$`)x3' <<< '^$\n!\n4\n9'
é de 41 bytes (não mais$'
) e também se livra da nova linha de fuga espúriaDyalog APL ,
3129 bytesSolicita caracteres horizontais, largura, caracteres de junção, altura e caracteres verticais - nessa ordem.
⎕⍴⍞
caracteres de entrada horizontal e tempos de largura de entrada repetidos ( ⍵ abaixo)⍞{
...}
caractere de junção de entrada que será ⍺ na função ...∊⍺⍵⍺
achatar [[junção], [horizontais], [junção]]⊂
encapsular para que possa fazer parte de uma lista(
...),
anexar ...h←⎕
altura de entrada⍞⍴⍨
caractere vertical de entrada e repita-o muitas vezes↑
transformar a lista de strings em uma tabela de caracteres⊂
encapsular (para que possa ser repetido como um todo)3/
repita isso três vezes⍪/
concatenar as três peças verticalmente(isso também os encapsula, então precisamos ...)
⊃
remova o encapsulamentoh↓
solte o primeiro h (linhas)TryAPL online!
fonte
C, 130 bytes
Uso:
Resultado
fonte
define
e vírgulas em s e adicioná-los comof(C,O,P,S,_,D,o){W;E;W;E;W;}
salva um byte.C #, 108 bytes
Função anônima que gera cada linha horizontal e vertical e constrói a saída final.
Função ungolfed:
Programa completo com casos de teste:
fonte
MATL , 15 bytes
Obrigado a @muddyfish por uma correção
Experimente online!
Explicação
O conteúdo da pilha após cada etapa é indicado para maior clareza, usando o primeiro exemplo do desafio.
fonte
Bash + coreutils, 105 bytes
Assumindo que o arquivo no qual este é armazenado é nomeado
A.sh
, o uso seria:O
--
são necessários, apenas no caso de uma das entradas de caracteres passa a ser um-
, eprintf
aparentemente não lida com traços no início de uma seqüência muito bom, sem as duplas traços.Explicação
Supondo que a entrada seja
5 2 + * |
...$3
printf -- "$4%.0s" $(seq $1)
$3printf "\n$5%.0s" $(seq $2)
Crie o primeiro segmento horizontal e o segmento vertical todos juntos. Isso resultaria em:
printf -- "$3
printf -- "$4%.0s" $(seq $1)
$3printf "\n$5%.0s" $(seq $2)
%.0s\n" {1..3}Repita o
3
tempo parcial parcial criado anteriormente . Isso agora resulta em:printf -- "$3
printf -- "$4%.0s" $(seq $1)
$3printf "\n$5%.0s" $(seq $2)
%.0s\n" {1..3}|sed -n 1,$(($2*2+3))pFinalmente, canalize a saída anterior
sed
para se livrar dos 2 últimos segmentos de linha, produzindo apenas as primeiras<Vertical Segment Length>*2+3
linhas doE
. Finalmente conseguimos oE
que queremos:fonte
PowerShell v2 +,
6059 bytesRecebe entrada como argumentos de linha de comando individuais. Constrói a cadeia horizontal, armazena-a
$x
para uso posterior e forma-a em uma matriz com o operador de vírgula,
. Executa a concatenação da matriz (isto é, adicionando elementos ao final) dos$d
formulados em uma matriz de$b
elementos. Isso, por sua vez, é formulado em uma matriz de dois elementos com outro operador de vírgula e é deixado no pipeline. Em seguida, a horizontal$x
é deixada no pipeline. Abusa a formatação padrão deWrite-Output
para colocar uma nova linha entre elementos.Exemplo
fonte
Python 3, 60 bytes
Uma função
Caso de teste
fonte
Brainf * ck, 147 bytes
Recebe a entrada do stdin como os 5 primeiros caracteres digitados. Os dois primeiros têm 48 subtraídos do código ASCII para que 0-9 se comportem conforme o esperado. Para números> 9, adicione 48 ao número e use o caractere correspondente. Os outros três caracteres são os especificados no desafio.
Tenho certeza de que não é a solução ideal, mas a vida é muito curta para o cérebro.
Com comentários:
Exemplo de execução:
fonte
PHP, 97 bytes
sem loop, apenas builtins.
Corra com
php -r '<code>' <parameters>
.fonte
Java 7,
205129 bytes-76 bytes graças a um estranho anônimo.
PS: Não vá editar as postagens de outras pessoas na próxima vez. Se você tem algo para jogar golfe, deixe um comentário ou, se estiver usando uma abordagem completamente diferente, poderá dar sua própria resposta. Ainda obrigado por jogar fora todos esses bytes - quem quer que você seja ..
Casos não testados e de teste:
Experimente aqui.
Resultado:
fonte
Raquete 124 bytes
Forma mais legível:
Teste:
fonte
C ++, 121 bytes
Ungolfed:
Em C ++, não é permitido declarar funções sem tipo, como em C. Mas macros que se comportam como uma função são totalmente possíveis. Observe também que a versão ungolfed não será compilada até você adicionar um "\" a cada um, exceto a última linha da macro. Você pode salvar dois bytes adicionais removendo o {}, mas não poderá usar a macro duas vezes seguidas.
Uso:
Resultado:
Experimente online
fonte
CJam , 23 bytes
Experimente online!
A entrada está na ordem especificada, mas deve ser separada por espaço, em vez de usar vírgula. Parte da dificuldade é obter a entrada na ordem correta para a operação de junção
*
do CJam ; para comparação reorganizando a entrada poderia economizar 4 bytes .Se as entradas são dubladas
A B C D E
, o programa funciona mais ou menos assim:fonte
Lua (5.2), 144 bytes
Experimente online! (Campo de codificação)
Ele deve gerar algo assim agora:
Entrada própria:
7 2 + l @
Você pode alterar a entrada nas opções projeto-> compilação e lá os valores, cada valor como no exemplo, mas não separados por vírgulas, mas por espaços.
fonte
QBIC, 44 bytes
Explicação
fonte
PHP, 94 bytes
Formate uma matriz na mesma ordem que a sequência sugerida
fonte
,"\n"
vez de."\n"
, poderá soltar os parênteses para o ternário.for($h++;$i<=2*$h;)
e$i++%$h
salva outro byte.$v-1
fornece apenas 3 caracteres horizontais para[5,2,+,|,-]
.Número de caracteres horizontais, sem incluir os caracteres de borda esquerda e direita