Gere um mapa de região selvagem ASCII.
Exemplo de saída:
................^^^^
..................^^
...^^^^........o....
.....^^^^...........
....................
........o....TT.....
..TTTT..............
TTTT.TTTT....~~~~~~.
..TT..........~~~~~~
....................
Anti-exemplo (não faça isso):
....................
...........T........
...^..........oo....
......^.............
....................
..............TT....
T.T.T.T.T........T..
.................T..
T.T.T.T.T..........T
..............TT...T
Regras:
- Deve ter pelo menos 20 x 10 caracteres
- Deve ser diferente a cada corrida, ou seja, aleatória
- Deve conter áreas de forma contínua e variável das árvores 'T', morros '^' e água '~', a maioria das quais deve consistir em mais de 5 células
- O caractere de chão padrão é '.'
- Deve conter pelo menos 2 aldeias 'o' que geralmente não estão próximas umas das outras
- Não deve conter padrões óbvios, como retângulos ou áreas uniformemente espaçadas - "aparência natural" é a chave
- Você não precisa verificar explicitamente se as regras são seguidas (por exemplo, não há necessidade de lógica anti-retângulo), mas a grande maioria das execuções (por exemplo, 80%) deve produzir resultados conformes
- Com seu envio, inclua um exemplo de saída
Pontuação:
O vencedor tem a menor pontuação da fórmula: code character count
-votes
code-golf
ascii-art
random
generation
Tapio
fonte
fonte
Respostas:
APL (
9976)Um pouco mais do que o necessário (para que produza uma melhor saída), mas eu a reduzirei quando a resposta do Golfscript chegar.A resposta GolfScript foi postada, então aqui está uma resposta mais curta. Pensei em outra maneira (bastante óbvia, em retrospectiva) de reduzi-la para que a saída não seja muito pior que o programa original e seja ainda mais curta que o meu plano de backup original.
(Na versão antiga, eu tinha cinco campos de bits que estava compartilhando, agora tenho três que estou adicionando um ao outro.)
Substituí a saída de exemplo pela saída da nova versão, é claro.
Explicação:
F←⍳S←10 20
: size é 20x10, F é uma matriz em que cada elemento é suas coordenadas{F∊(?S)∘+¨+\{2-?3 3}¨⍳99}¨T←⍳5
: gere três campos de bits, iniciando em uma coordenada aleatória e executando 99 etapas aleatórias em um campo vizinho e, em seguida, ativando esse bit. 99 parece alto, mas geralmente retrocede, pois é aleatório. Isso faz os mapas para as áreas.(⊂7×F∊{?S}¨⍳2)
: Adicione em duas aldeias.⊃7⌊1++/
: soma as áreas, fornecendo uma matriz onde cada número representa um determinado tipo. Limite às 7, porque as aldeias podem aparecer em outra área com números altos.'.T^~^To'[
...]
: substitua cada número pelo caractere certo. Como existem 3 campos possivelmente sobrepostos, o valor mais alto possível é 6. (3 + 3)Exemplo de saída:
e
Versão antiga:
fonte
JavaScript -
294290 caracteresPara encorajar tentativas, eu mesmo fiz uma rachadura. Você pode tentar uma demonstração ao vivo aqui (é necessário abrir o console JS do seu navegador). Testado com Chrome e IE8.
Exemplo de saída:
Não é o ideal, pois sempre existem apenas três áreas (uma de cada tipo), seu tamanho máximo é de 5x2 células e depois de algumas execuções, você começa a perceber limitações na localização (e nas aldeias). No entanto, cumpre as regras.
fonte
GolfScript, 97 caracteres
Exemplo de saídas:
e
fonte
Ruby 1.9 (
127116112107)A saída é um pouco simples, mas acho que atende principalmente às especificações!
Alguns exemplos de saídas:
Outro:
E de novo:
Devido à maneira como é codificado, quase sempre há uma árvore solitária. Eu gosto de imaginar que é a árvore Deku.fonte
Q (
116107 caracteres)Aqui está um em Q
Saída de amostra
e
e
Posso ajustar a matriz estocástica para afetar a saída, mas acho que o acima está de acordo com o que você está procurando.
/ edit: saída ajustada
/ edit: reduzido número de caracteres adicionando apenas 2 aldeias
fonte
K, 84
Resultado:
e
fonte