Kayınpederimin bahçesinde koy ile dolu bir balık havuzu var. Kodumdan aşağıdaki alıntıyı fark edene kadar aklımdan geçmedi.
',') & '_'
... balık suratlarım ekranımdan bana bakıyordu ...
Bu da bana harika bir fikir verdi.
Sizin için olan arayışım, sevgili golfçülerim, aşağıdaki kuralları içeren tek satırlık bir ASCII akvaryumu oluşturmak:
- Akvaryumun tankın yanından tankın diğer tarafına kadar olan boyutu 60 karakterden küçük olmamalıdır ve 80 karakterden büyük olmamalıdır. Boru / çubuk (
|
) karakteri kullanılarak tankın yanlarının belirtilmesi gerekir . - Balık, tankın kenarları arasında soldan sağa "yüzebiliyor" olmalıdır. Dönecekleri için, bir yönden diğerine geçiş için önden görünüm gerekir.
Balık aşağıdaki gibi görünmelidir:
}}< }} ',')
Doğru balık yüzme(',' {{ >{{
Sol balık yüzme}}('_'){{
Öne bakan balık
Bir balık yönünü değiştirdiğinde (% 30 şans), bir yönden başlamalı, ön tarafa bakmalı, sonra diğer yöne bakmalıdır ... Balığın dönmesi için yeterli alan olduğundan emin olun, yani balıkların altı tane boşluk bırakması gerekir. tankın kenarı minimum ...
- Bir balık bir balon şişirmediği veya yön değiştirmediği sürece, karşı tarafına doğru devam eder, tankın kenarının altı boşluğuna girerse yön değiştirir.
- Balıklar (sola veya sağa doğru) zaman zaman (% 10 şans) art arda kabarcıkları üflemeyi durdurabilir (
.oO*
), bu yüzden balık, kabarcığın var olması için yanlarında bir boşluk olması gerekir; sadece kenarlara yakın yüzün, bir yerden tasarruf edin. Balık hareket etmeden önce balonun kaybolması gerekir ...
Balığın davranışının bir dizi çizgi örneği, -
karakterleri boşlukları belirten karakterlerle birlikte , burada kod gösterme özelliği biraz katı ... Bu kodları koyduğunuzda bu çizgilerin boşluklarla değiştirilmesini bekleyeceğim ...
Buradaki her satır, hızlandırılmış bir çerçeve olarak kabul edilebilir.
|-}}< }} ',')----------|
|--}}< }} ',')---------|
|---}}< }} ',')--------|
|----}}< }} ',')-------|
|-----}}< }} ',')------|
|-----}}< }} ',').-----|
|-----}}< }} ',')o-----|
|-----}}< }} ',')O-----|
|-----}}< }} ',')*-----|
|---------}}('_'){{----|
|-----------(',' {{ >{{|
|----------(',' {{ >{{-|
|---------(',' {{ >{{--|
|--------.(',' {{ >{{--|
|--------o(',' {{ >{{--|
|--------O(',' {{ >{{--|
|--------*(',' {{ >{{--|
|--------(',' {{ >{{---|
|-------(',' {{ >{{----|
|------(',' {{ >{{-----|
vb. Yukarıdaki örnek, söylediğim gibi, küçüktür, ancak genel fikri anladınız ...
En kısa kod kazanır ...
Çıktıyı aynı satırda (eğer mümkünse) bekliyorum, değilse, kareden sonra art arda kareyi göstermek iyi olur ... Bir satır mı yoksa birden çok satır mı seçtiğiniz size kalmış. Birden fazla satır yapıyorsanız, satırları yeni satırlarla ayrılmalıdır.
Ayrıca çerçeveler arasında 2000ms olarak bir zamanlayıcı da yüklenir. Bu zorunludur .
Bakalım neyin var?