Em 25 de março de 1821, a Grécia travou sua grande guerra de independência . Para honrar isso, sua tarefa é imprimir o hino nacional grego:
Σε γνωρίζω από την κόψη
του σπαθιού την τρομερή.
Σε γνωρίζω από την όψη
που με βιά μετράει τη γη.
Απ' τα κόκκαλα βγαλμένη,
των Ελλήνων τα ιερά!
Και σαν πρώτα ανδρειωμένη,
χαίρε ω χαίρε Λευτεριά!
Και σαν πρώτα ανδρειωμένη,
χαίρε ω χαίρε Λευτεριά!
Και σαν πρώτα ανδρειωμένη,
χαίρε ω χαίρε Λευτεριά!
Esta é a minha própria versão do hino (pontuação, letras maiúsculas), embora a letra seja original.
- É proibido proibir a impressão ou a devolução de textos incorporados.
- O texto impresso deve ser exatamente como o descrito acima, com uma nova linha à direita opcional.
- A saída deve estar em UTF-8, a menos que não possa ser totalmente suportada; nesse caso, a saída deve ser codificada na alternativa suportada mais próxima.
code-golf
kolmogorov-complexity
unicode
Erik, o Outgolfer
fonte
fonte
Σ
em ISO-8859-1, quando interpretado em UTF-8, éΣ
. ( Ferramenta útil )Respostas:
Geléia ,
180174163 bytesExperimente online!
fonte
ṃ
...ṃ€
...ḃ
...) ... Parabéns pela resposta mais curta (que merece mais votos positivos)!Python 3 , 263 bytes
Experimente online!
Use a mesma técnica de repetição que mbomb007 usou , mas substituí todos os caracteres com mais de 47 (todas as letras gregas), u913 ~ u974 por u48 ~ u109 e desfazê-lo antes de imprimir
fonte
Java 7,
320319300294293 bytesExperimente online!
Isso gera o hino com uma nova linha à direita. Eu converti a função de retornar a
String
para avoid
para imprimir a String em vez de retorná-la e salvar bytes.Golf ainda mais pela manhãGolfistas não dormem: PExplicação (desatualizada)
Para chegar a essa String reduzida, verifiquei manualmente subtraindo quais números dos pontos de código seriam os melhores. Esses valores teriam que estar entre
e
~
. A fim de fazer a detecção de se um char é pontuação (.
,'
,!
,) ou não, seria melhor se todos os valores mentiu acima
.
(46). E não deve haver nenhum\
s na String, porque, caso contrário, o Java pensa que são sequências de escape, e então eu tenho que escapar delas. Finalmente, subi 866 dos caracteres gregos.fonte
Python 3,
350345 bytesExperimente online
fonte
sep
para -5 bytesLote do Windows 10,
424404 bytesNotas:
chcp
chamada falhará se o prompt de comando estiver configurado para usar fontes de varredura. Altere-os para, por exemplo, o Lucida Console (não requer reinicialização).chcp 65001
.Editar: salvou 20 bytes graças a @ ConorO'Brien.
fonte
@set t="Και σαν πρώτα ανδρειωμένη," "χαίρε ω χαίρε Λευτεριά!"
e substituir%t% %u%
com%t%
?Bubblegum , 190 bytes
Experimente online!
fonte
PowerShell ,
332270261 bytesExperimente online!
Isso pega a string munged como uma
char
matriz, alimenta-a uma de cada vez através de um loop a|%{...}
cada iteração, produzindo o caractere reto$_
ou incrementando-o870
antes de o lançar novamente como achar
(com base em se é uma pontuação ou não). Alguns outros truques são definidos$a
como uma frase repetida e des Triplicam as últimas três estrofes. Esses são todos-join
reunidos em uma sequência completa e, em seguida, a saída é implícita.Editar - Woo! Esta é a 1100ª resposta do PowerShell no site! : D
fonte
Japt,
197196195 bytesTeste online! Contém três bytes 0x95 que foram substituídos por
?
.fonte
/// ,
324323 bytesExperimente online!
Talvez pudesse jogar mais, mas estou cansado.
Funciona substituindo caracteres como
k
texto mais longo. Também fiz algumas substituições de caracteres, porque os caracteres gregos têm mais bytes do que caracteres semelhantesp
. Simples o suficiente.-1 byte graças a @ErictheOutgolfer.
fonte
ΛευτεPιά!/
, é possível removê-la para que a saída não tenha uma nova linha principal.Bash + GNU iconv, 214
Isso apenas usa o
iconv
utilitário para converter da codificação GREEK (byte por caractere) para utf-8, além de remover um pouco de redundância armazenando repetições em variáveis.Não tente copiar diretamente do acima exposto - muitos não imprimíveis são colados ao colar. Em vez disso, crie o script da seguinte maneira:
fonte
-f GREEK
não é necessário. Usar um heredoc em vez de um herestring salva um byte adicional.PHP, 296 bytes
PHP, 349 bytes
fonte
Python 2.7, 190 bytes
abuso zlib. Hexdump:
Como o @Dennis aponta, isso precisa ser executado em um terminal para produzir corretamente a saída UTF-8.
fonte
echo -ne '.encode("utf8")' >> code.py
linha no meio resolve o problema. Não acho que confiar em um terminal UTF-8 seja muito louco, mas, se for, alterarei a resposta.Retina , 199 bytes
Experimente online!
Woohoo, pouco menos de 200 bytes.
Explicação
A idéia principal é evitar a maioria dos caracteres Unicode reais, porque eles apenas aumentam a contagem de bytes se forem usados em qualquer lugar. Em vez disso, represento cada letra grega por uma letra ou dígito ASCII. Acontece que as letras relevantes de
Α
(que é um alfa)ώ
abrangem exatamente 62 pontos de código. Isso é 10 + 26 + 26, o número de dígitos e letras ASCII. O outro caractere Unicode que temos é o¶
que o Retina usa para representar os feeds de linha. Podemos economizar mais alguns bytes substituindo-o por_
. Em seguida, a abreviaçãow
nos estágios de transliteração contém exatamente os 63 caracteres que usamos como substituições e podemos representar o intervalo para o qual é mapeado usando apenas 3 caracteres de 2 bytes (¶
e as duas extremidades do intervalo de letras gregas).Portanto, o código é bastante ilegível na maior parte, pois essa substituição é feita no último estágio. Vamos desfazer isso para entender um pouco mais o código:
Parece um pouco mais com as coisas que queremos produzir. O primeiro estágio simplesmente configura a estrutura geral. Ele contém todas as partes exclusivas da saída, além de mais alguns espaços reservados para peças repetidas:
:
representa a primeira e a terceira linha. Eles acabam sendo um pouco diferentes, porqueκ
falta a terceira linha, motivo pelo qual a última etapa remove a segundaκ
no resultado.#
representa as duas últimas linhas, que são repetidas três vezes.;
representa o repetidoχαίρε
nessas linhas.=
significa uma palavra que começa comτ
(e o espaço que a antecede). Existem apenas o suficiente para salvar um único byte.fonte
Jolf, 187 bytes
Ser codificado na página de códigos grega ajuda.
Experimente aqui! É tudo grego para mim ...
fonte
Python 3 , 246 bytes
Experimente online!
Minha opinião sobre a abordagem de Rod .
fonte
Bubblegum ,
194187 bytesVocê pode reverter esse hexdump com
xxd -r
.Obrigado Dennis por me redirecionar para Zopfli :)
fonte