Meus sogros têm um viveiro de peixes no quintal, cheio de carpas. Isso realmente não passou pela minha cabeça até que notei o seguinte extrato do meu código.
',') & '_'
... Eu tinha caras de peixe olhando para mim da minha tela ...
O que me deu uma ótima idéia ...
Minha busca por você, meus queridos golfistas, é criar um aquário ASCII de uma linha, com as seguintes regras:
- O tamanho do aquário do lado do tanque para o outro lado do tanque não deve ser menor que 60 caracteres e não maior que 80 caracteres. As laterais do tanque precisam ser indicadas usando o caractere pipe / bar (
|
). - Os peixes devem ser capazes de "nadar" da esquerda para a direita entre as laterais do tanque. Como eles estão girando, é necessária uma vista frontal para a transição de uma direção para a outra.
O peixe deve ter a seguinte aparência:
}}< }} ',')
Peixe nadando direito(',' {{ >{{
Peixe nadando à esquerda}}('_'){{
Peixe virado para a frente
Quando um peixe vira para mudar de direção (chance de 30%), ele deve começar de uma direção, ficar de frente para a frente e depois de outra direção ... Verifique se há um amplo espaço para o peixe virar, ou seja, exige seis espaços antes da partida. borda do tanque mínimo ...
- A menos que um peixe esteja soprando uma bolha ou mudando de direção, ele continuará na direção em que está voltado; se ficar dentro de seis espaços ao lado do tanque, ele mudará de direção.
- O peixe (voltado para a esquerda ou direita) pode ocasionalmente (10% de chance) parar de soprar bolhas sucessivamente (
.oO*
), portanto, é necessário que o peixe tenha um espaço disponível próximo a ele para que a bolha exista, para que um peixe possa nade o mais próximo possível dos lados, economize um espaço. A bolha deve desaparecer antes que o peixe possa seguir em frente ...
Uma série de linhas de exemplo do comportamento do peixe, com -
caracteres indicando os espaços, pois o recurso de exibição de código aqui é um pouco rigoroso ... Espero que esses traços sejam substituídos por espaços quando você codificar isso ...
Cada linha aqui pode ser considerada um quadro em lapso de tempo.
|-}}< }} ',')----------|
|--}}< }} ',')---------|
|---}}< }} ',')--------|
|----}}< }} ',')-------|
|-----}}< }} ',')------|
|-----}}< }} ',').-----|
|-----}}< }} ',')o-----|
|-----}}< }} ',')O-----|
|-----}}< }} ',')*-----|
|---------}}('_'){{----|
|-----------(',' {{ >{{|
|----------(',' {{ >{{-|
|---------(',' {{ >{{--|
|--------.(',' {{ >{{--|
|--------o(',' {{ >{{--|
|--------O(',' {{ >{{--|
|--------*(',' {{ >{{--|
|--------(',' {{ >{{---|
|-------(',' {{ >{{----|
|------(',' {{ >{{-----|
etc. O exemplo acima é, como eu disse, pequeno, mas você entende a ideia geral ...
O menor código vence ...
Estou esperando a saída na mesma linha (se possível), se não, exibir quadro após quadro em sucessão é bom ... Se você escolhe uma linha ou várias linhas, é com você. Se você estiver executando várias linhas, elas deverão ser separadas por uma nova linha.
Também é imposto um timer entre quadros, 2000ms. Isso é obrigatório .
Vamos ver o que você tem!