Dengeleme Yasası
Bir testere (sözde Fransız 'ci-ça'dan, yani' bu-bu 'anlamına gelir), benzer şekilde her yerde bulunan slayt ve salınım ile birlikte, oyun alanı ekipmanının kutsal üçlüsünün üçte birini oluşturur. Bir testere, sadece ve her iki taraftaki momentlerin toplamı eşdeğerse mükemmel bir dengededir. Dolayısıyla bir testere testeresi, daha düşük moment toplamı olan tarafa belirli bir ağırlık ekleyerek dengelenebilir; bunu başarmak, bu meydan okuma için hedefinizdir.
Meydan okuma
Zorluğunuz, bir testere testeresinin giriş olarak bir tasvirini alıp tekrar çıktısını almak ve onu dengelemek için testere testeresinin bir ucuna ağırlık eklemektir.
Giriş
Programınız makul bir formatta aşağıdakiler gibi bir ASCII testere almalıdır:
100 100
-------------------
^
İlk satır, her biri testere testeresindeki ağırlıkları temsil eden iki sayı içerir. Her tarafta, her biri tahta tarafının en ucuna etki eden bir ağırlık bulunur. Ağırlıkların tamsayı olması ve her zaman tahtaların karşılık gelen uçlarıyla hizalanması garanti edilir. Bu sayılar asla dayanakla çakışmaz (^
) .
İkinci çizgi, testere testeresinin 'tahtalarını' temsil eder. Her tire ( -
), doğrudan doğrudan dayanak üzerinde (^
) .
Üçüncü çizgi, testerenin dayanağını temsil eder. Bu dayanak, bu satırda boşluk olmayan tek karakterle, inceltme işaretiyle ('^') işaretlenir. Dayanak, ağırlığı temsil eden sayılar ya girişte ya da çıktıda dayanakla çakışmayacak kadar alan kaldığı sürece, tahta uzunluğu boyunca geçerli bir girişte herhangi bir yere yerleştirilebilir.
Girdinin üç satıra sahip olması ve testere oluşturan karakterlerden önce veya sonra beyaz boşluk olmaması garanti edilir (elbette, bunu gerektiren üçüncü satır hariç).
Çıktı
Çıktı için, aynı testere tasviri stdout'a yazdırılmalıdır, ancak testere testeresini dengelemek için ağırlıklardan biri (ve sadece bir tanesi) daha büyük bir ağırlıkla değiştirilmelidir. Girdilerin bunu yalnızca tamsayılar kullanarak mümkün kılacağı garanti edilmektedir. Bu nedenle, ağırlıklar ondalık basamaklar veya benzeri gösterimler olmadan gösterilmelidir. Dilinizde stdout kullanılmıyorsa, çıktıda topluluk / meta konsensüsüne başvurmalısınız. Sondaki satırsonları iyi ancak tasvir biçiminde yapılan diğer değişiklikler büyük olasılıkla uygun değil.
Örnek
Test Girişleri ve Karşılık gelen Çıkışlar
Giriş 1
12 22
--------------------
^
Çıktı 1
12 26
--------------------
^
Giriş 2
42 42
-----------
^
Çıktı 2
42 42
-----------
^
Giriş 3
3 16
----------------
^
Çıkış 3
14 16
----------------
^
Giriş 4
1 56
-------------------
^
Çıkış 4
196 56
-------------------
^
Referans Uygulaması - Python 3
# Takes a list of strings as input
def balance_seesaw(lines):
weights = [int(w.strip()) for w in lines[0].split()]
length = len(lines[1])
pivot = lines[2].find("^")
left_length = pivot
right_length = length - 1 - pivot
left_torque = weights[0] * left_length
right_torque = weights[1] * right_length
if left_torque > right_torque:
weights[1] = left_torque // right_length
elif right_torque > left_torque:
weights[0] = right_torque // left_length
weights = [str(w) for w in weights]
string_gap = " " * (length - sum(len(w) for w in weights))
lines[0] = weights[0] + string_gap + weights[1]
print("\n".join(lines))
balance_seesaw(["1 56",
"-------------------",
" ^ "])
kurallar
Bu kod golf , bu yüzden en kısa kod bayt cinsinden sayılır. Sayım baytları dilinizde garipse meta'yı kontrol edin.
Standart kurallar / boşluklar geçerlidir.
Giriş makul bir biçimde alınmalıdır. Uygun biçimlerin kapsamlı olmayan bir listesi aşağıdaki gibi verilir:
- Satır yeni satır karakterleriyle ayrılmış tek bir dize
- Dizelerin listesi, her dize bir satırı temsil eder
- 2D Dizi veya Karakter Matrisi
İlgili Zorluklar
- Bir testere üzerinde bir ağırlık setini dengeleyin - Önerilen Ağustos 2015 by samgak