Skorlar
Gönderimler girildikçe bu bölüm doldurulacaktır.
Normal
1. bopjesvla Perl 54
2. edc65 Javascript (ES6) 91
3. name language score
4. name language score
5. name language score
Bonus Turu
1. name language score
2. name language score
3. name language score
4. name language score
5. name language score
Karel J. AlphaBot
Arka fon
Java için popüler bir tanıtım dersi Karel J. Robot'tur. (kendim kullanıyorum). Robot, bir ızgaralar (pozitif tamsayı y-koordinatları) ve caddeler (pozitif tamsayı x-koordinatları) ve ızgaraya yerleştirilebilecek ve depolanabilecek bip sesleri ile etkileşime girer (Karel ve herhangi bir bip sesi yalnızca kafes üzerinde mevcut olabilir puan). Karel (robot) sadece beş eylem gerçekleştirir: 1 ileri git, sola dön, bir bip sesi çıkar, bir bip sesi al ve kendini kapat.
Bilgisayar Bilimi dersimde ilk ödevlerimizden biri, Karel'i sağa dönmeyi, geri dönmeyi ve 1 ileri hareket etmenin ve bir bip sesi çıkarmanın birleşik eylemini nasıl yapacağını öğrenmek için programlamaktı. Birkaç gün sonra bir ödev bu yöntemleri kullanmak ve alfabenin harflerini üretmek için yeni yöntemler yazmaktı.
Doğal olarak, bu ödevi bitirdiğimde, alfabenin her harfini yapmak için daha fazla yöntem yazdım ve on sayısal haneyi yazdım ve bir tür kelime işlemcisini robottan nasıl çıkaracağımı anlamaya çalışıyorum, burada bir dize STDIN'e girer ve robot harflere benzeyen şekilde beepersı ızgaraya koyar.
Her private void draw#
karakter için her yazışımda#
, ihtiyacım olan komut dizisi için kısaltmaları söyleyecek bir yorum ekledim.
Benim emrinde (açıklama - bunlar sadece yararlı komutlar) aşağıdaki komutları (sözde kodla yazılmış ) var.
Turn Left
Rotate the robot 90˚ counterclockwise
Abbreviated as "l"
Turn Right
Rotate the robot 90˚ clockwise
Abbreviated as "r"
Move
Move one space forwards
Abbreviated as "m"
Put Beeper
Put a beeper on the spot that Karel is on
Abbreviated as "p"
Drop Beeper
Move, then Put Beeper
Abbreviated as "d"
Turn Around
Turn Left, then Turn Left
Abbreviated as "a"
Koşullar
Robot aşağıdaki sırada ilerlemelidir.
- Robot, mektubun çizileceği minimum alanın 5xN dikdörtgeninin sol alt köşesinde başlar.
- Robot mektubu çizer.
- Robot, dikdörtgenin sağ alt köşesine hareket eder.
- Robot iki boşluk sağa hareket eder ve kuzeye / yukarıya bakmalıdır
Bir örnek üzerinde çalışalım. Diyelim ki çizmek istiyoruz A
. Robotun yeri, yönünü gösteren harftir (kuzey, güney, doğu, batı). Robot, sesli uyarı veren bir noktadaysa ve büyük harf, robot sesli uyarı vermeyen bir noktadaysa büyük harfle yazılır. o
sesli uyarı veren noktaları ve sesli uyarı .
içermeyen noktaları temsil eder.
Daha sonra göreceğimiz gibi A
, bu.
.ooo.
o...o
ooooo
o...o
o...o
İşte olası bir çözüm.
Grids ..... ..... ..... ..... ..... ..... ..... ..... .....
..... ..... ..... ..... ..... ..... ..... ..... .....
..... ..... ..... N.... E.... oE... ooE.. oooE. oooW.
..... ..... N.... o.... o.... o.... o.... o.... o....
n.... N.... o.... o.... o.... o.... o.... o.... o....
Letters p d d r d d d a
..... ..... ..... ..... ..... n.... e.... .E... .oE..
..... ..... ..... ..... N.... o.... o.... o.... o....
ooWo. oWoo. Wooo. Nooo. oooo. oooo. oooo. oooo. oooo.
o.... o.... o.... o.... o.... o.... o.... o.... o....
o.... o.... o.... o.... o.... o.... o.... o.... o....
m m m r d m r d d
.ooE. .oooe .ooos .ooo. .ooo. .ooo. .ooo. .ooo.
o.... o.... o.... o...S o...o o...o o...o o...o
oooo. oooo. oooo. oooo. ooooS ooooo ooooo ooooo
o.... o.... o.... o.... o.... o...S o...o o...o
o.... o.... o.... o.... o.... o.... o...S o...E
d m r d d d d l
mml
Dördüncü mermiyi tamamlamak için final , her harfte göründüğü ve yukarıda önerilen çözümdeki her şeye geri dönmek ve iki sütun daha eklemek istemediğim için örtüktür.
Böylece yapılması A
gereken bir çözüm pddrdddammmrdmrdddmrddddlmml
.
Bunun çözümünüz olması gerekmediğini unutmayın. Algoritmanız, her bir bipten geçerek bip seslerini doğru yerlere yerleştirebilir ve diğer bip seslerinin yerleştirildiği veya yerleştirileceği yerlere güvenmeyebilir. Algoritmanız ne olursa olsun, robot ızgaradaki alan başına sadece bir bip sesi verebilir.
Program
Programınız girdisi olarak harfin ızgarasının 5xN ızgarasını alır. Girişte robot olmadığını unutmayın; robotun sol alt (güneybatı) köşede, kuzeye baktığı varsayılmaktadır.
Çıktı, sıra için kısayol olan harf sırası olacaktır.
Örnek girişler
.ooo.
o...o
ooooo
o...o
o...o
o...o.ooooo
o...o...o..
ooooo...o..
o...o...o..
o...o.ooooo
Örnek çıktılar
pddrdddammmrdmrdddmrddddlmml
prmmmlmlmmdrdrdddlmlmmdrdrmmmdrddddlmmlprdddlmldmmrmrmdmlmldmmrdrddddrmmmdlmml
Bu kod golf, beyler. Standart CG kuralları geçerlidir. Bayt cinsinden en kısa kod kazanır.
Bonus Turu
kurallar
Bonus turuna katılmak istiyorsanız, kodlarınızı hareket ettirdiğinizden emin olun! Aşağıda, programımın çalıştığında oluşturduğu 5x5 harfin tümünü içeren bir kütüphane bulunmaktadır. Bonus turunun amacı ABCDEFGHIJKLMNOPQRSTUVWXYZ
, olabildiğince az hareket içeren bir dizi yazdıran bir program yazmaktır . STDIN için girdi yok. Kod notlandırılacaktır değil kodunun uzunluğuna ama onun üzerinde "hareket skor." Hareket puanı, dikdörtgenin her noktasını ziyaret eden süpürme aracı algoritmalarını caydırmak için tasarlanmıştır.
d: 1
l: 1
m: 4
p: 1
r: 1
harfler
.ooo. oooo. ooooo oooo. ooooo ooooo .oooo o...o
o...o o...o o.... o...o o.... o.... o.... o...o
ooooo oooo. o.... o...o oooo oooo. o.ooo ooooo
o...o o...o o.... o...o o.... o.... o...o o...o
o...o oooo. ooooo oooo. ooooo o.... oooo. o...o
ooooo ....o o...o o.... ooooo o...o ooooo oooo.
..o.. ....o o..o. o.... o.o.o oo..o o...o o...o
..o.. ....o oo... o.... o.o.o o.o.o o...o oooo.
..o.. o...o o..o. o.... o...o o..oo o...o o....
ooooo .ooo. o...o ooooo o...o o...o ooooo o....
oooo. oooo. ooooo ooooo o...o o...o o...o o...o
o..o. o...o o.... ..o.. o...o o...o o...o .o.o.
o..o. oooo. ooooo ..o.. o...o .o.o. o.o.o ..o..
oooo. o..o. ....o ..o.. o...o .o.o. o.o.o .o.o.
....o o...o ooooo ..o.. ooooo ..o.. ooooo o...o
o...o ooooo
.o.o. ...o.
..o.. ..o..
.o... .o...
o.... ooooo
Orijinal sınama ile aynı prosedür izlenmelidir: harfler her harf arasında bir boşluk bırakarak teker teker çizilmelidir.
Standart CG kuralları geçerlidir. En düşük hamle puanı ile giriş kazanır.
Özetlemek gerekirse, her iki kod da aynı şeyleri yapacaktır. İlk kod, kodda en az sayıda bayt içermeli ve ikinci kod en az sayıda hamle kullanmalıdır.