Neste desafio, você deve pegar dois números (separados por um espaço) como entrada e saída de um triângulo retângulo ASCII, composto por x
s.
O primeiro número será a largura e a altura do triângulo que você deve exibir. O segundo número será em qual canto o ângulo reto estará. Os cantos são numerados de 1 a 4, começando no canto superior esquerdo e seguindo a ordem de leitura em inglês:
1 2
3 4
Por exemplo (entradas e suas respectivas saídas triangulares):
INPUT | 3 1 | 3 2 | 3 3 | 3 4
------+-----+-----+-----+----
OUT- | xxx | xxx | x | x
PUT | xx | xx | xx | xx
| x | x | xxx | xxx
A saída do seu programa deve corresponder a esses exemplos exatamente para as respectivas entradas.
A entrada sempre será válida: o primeiro número será um número inteiro ≥1 e o segundo número será 1, 2, 3 ou 4.
Isso é código-golfe ; o código mais curto (na contagem de caracteres) vence.
code-golf
geometry
generation
Maçaneta da porta
fonte
fonte
(⍎⍵⌷'functions')
parte antes de decidir como interpretar toda a afirmação? Considere, por exemplo1+(⍵⌷'12+')|40
. Nem sequer saberia se|
é monádico ou diádico antes de⍎
receber essa parte entre parênteses. Toda a árvore da sintaxe abstrata muda de acordo com a avaliação.1+(⍎⍵⌷'12+')|40
... não vai me deixar editar.f ← { [ }
não dá erro!f 1÷0
dá ... um erro de domínio ! (por causa da divisão por zero). Somente quando você chama a função,f 123
você recebe um erro de sintaxe . Veja: imgur.com/jtmdi4BRuby,
11611510996Começarei com minha própria solução.
Só sei que vou ser derrotado por uma solução GolfScript de 30 caracteres quase que instantaneamente: P
Graças à minitech por cortar 19 caracteres (uau)!
fonte
==0
, você pode usar<1
.?x*x
salva outro personagem. Além disso,puts i[1]%2<1?t.rjust(s):t}
faria o truque, certo??
? Isso é necessário? Além disso, acho que você pode fazer a mesma coisa com or=
.1?
como um único token, e o espaço posterior, caso contrário, analisa como?t
(o que é equivalente a't'
). Como você propõe a reestruturação dar
peça?GolfScript (
3433 caracteres)É uma pena que os cantos não sejam numerados em rotação, porque isso permitiria uma abordagem mais elegante de criar uma matriz e depois girá-la várias
n
vezes:fonte
C # - 195
Formatado:
fonte
Golfscript,
39 3635 caracteresdemonstração ao vivo: http://golfscript.apphb.com/?c=OyczIDInCn5cOnkseycgJyoneCd5Kit5PC0xIDIkPyV9JS0xQDI%2BPyVuKgo%3D
Pena que não são 30 caracteres, conforme solicitado
fonte
1${-1%}*
por-1 2$?%
e\2>{-1%}*
com\2>-1\?%
fornecerá 2 caracteres.-1 2
pode ser escrito #0~2
~(\:y,{{>'x '=}+y,%0~2$?%}%\2&(%n*
Mathematica 122 (104?)
Sob uma interpretação liberal de "saída", o seguinte (104 caracteres) funcionará.
Se a entrada na forma de uma lista fosse permitida, o seguinte (75 caracteres) seria suficiente:
fonte
J,
595542383736 caracteresSe for permitido ter a entrada no final do programa:
Caso contrário (para 3 caracteres adicionais):
Uso:
ou
Eu acho que isso poderia ser um pouco mais curto, já que a maioria dos personagens são colchetes e bonés para mantê-lo em um estilo implícito.
Editar
Usando um gerúndio e o verbo da agenda foram cortados alguns caracteres, mas ainda existem muitos limites para o meu gosto.
Edit 2
Isso é um pouco mais parecido. Despejar a agenda de uma lista de quantas rotações são necessárias elimina a maioria dos colchetes extras e alguns limites.
Editar 3
Livre-se da última tampa estranha e de um par de colchetes no processo. Precisa encontrar uma maneira mais barata de codificar o número de rotações necessárias.
Editar 4 Use prefixo em vez de sufixo para cortar um caractere. Permite uma maneira diferente de criar a lista que não salva nenhum caractere. Bugger.
Editar 5
Usando uma fórmula para cortar outro caractere. Ainda sinto que esse pedaço pode ser mais curto.
fonte
Python 106 caracteres
fonte
Python 3, 91
Com base na resposta de Abhijit.
Modificou a criação da string de saída para evitar a soma de strings e os feios
1
s norange
. O Python 3 se livra doraw_
inraw_input
, mas torna necessário usar//
a divisão inteira e adicionar parênteses paraprint
, de modo que salva apenas um caractere.fonte
Gatinho , 140
Ungolfed:
Evidência de que preciso implementar sobrecarga e detalhar a biblioteca padrão.
fonte