Que dicas gerais você tem para jogar golfe em Haxe ? Estou procurando idéias que possam ser aplicadas a problemas de código-golfe e que também sejam pelo menos um pouco específicas para Haxe (por exemplo, "remover comentários" não é uma resposta).
Poste uma dica por resposta.
O Haxe pode ser executado online aqui !
Respostas:
Interpolação de string
O Haxe suporta a interpolação de strings em strings de aspas simples. Como cadeias de modelo no JavaScript ES6, você pode incluir uma expressão em uma cadeia com
${...}
:Ao contrário do ES6, no entanto, você pode omitir os colchetes quando a expressão for uma única variável:
Ambos os exemplos são impressos
2 + 2 = 4
.fonte
Compreensões de matriz
O Haxe suporta compreensões de matriz:
Ao contrário de muitos outros idiomas, você também pode usar
while
em compreensões:Isso pode ser muito útil quando você não sabe quanto tempo precisa de uma matriz.
Você também pode cadeia
for
,while
, eif
declarações:fonte
Operador de alcance
O Haxe possui um operador de intervalo
...
que pode ser usado para criar intervalos de números inteiros. Por exemplo, em vez disso:Você consegue fazer isso:
Específicos para
x...y
:x
ey
devem ser ambos Ints.x
não pode ser maior quey
.fonte
Executando uma Instrução Condicionalmente
Obviamente, você pode executar qualquer coisa condicionalmente com
if
:Se, no entanto, você tiver apenas uma instrução como acima, poderá usar o operador condicional ternário para salvar um byte:
Às vezes, você pode salvar outro byte usando
&&
, embora isso seja muito raro, porque&&
só funciona se ambas as expressões retornarem booleanos:Uma grande exceção a isso são as palavras - chave : se o Haxe encontrar um
return
,break
oucontinue
qualquer outro local , ele será executado imediatamente e sairá da expressão em que estava trabalhando. Isso significa que, em vez disso:Você pode fazer isso para salvar 2 bytes:
fonte
Use palavras-chave em expressões
Outra característica incomum de Haxe é que tudo é uma expressão . Por exemplo, este código é perfeitamente válido:
Ok, esse é um exemplo bastante inútil, mas espero que você entenda meu ponto de vista. Isso funciona com a maioria das palavras-chave:
Isso permite que você use
if
/else
inline, comop=if(n>1)7else 4;
,p=n>1?7:4;
é claro, é mais curto.Palavras-chave que você não pode usar em linha
var
- O compilador reclamará sobre a tentativa de usar o Void como um valor.for
/while
- O mesmo que acima, embora você possa usá-los em compreensões de matriz .fonte
Omitir suportes de função
Diferentemente da maioria dos idiomas, tudo no Haxe é uma expressão , inclusive
{blocks}
. Portanto, colchetes em qualquer lugar do programa Haxe (com exceção dasswitch
expressões) podem ser deixados de fora se contiverem apenas uma única instrução. Então, em vez disso:Você consegue fazer isso:
Um fácil dois bytes salvos em muitas funções.
Mesmo se uma função precisar conter várias instruções, você poderá salvar um byte movendo-o para
return
fora do bloco:Isso funciona porque um bloco é avaliado até a última expressão dentro do bloco.
fonte
n*n*n
, ou equivalente,n*n*n*n
para o efeito tesseract de um número, etc ... No entanto,Math.pow
serve como um bom exemplo aqui.Math.pow(3,n)
vez disso, vou usar ;-)