İyi Günler Golfçüler,
XKCD esinlenerek bugün için Bizim mücadelemiz Comics'in 356 ve 370 . Bir grup direncin direncini hesaplamak için bir program yazacağız. Bu bir kod meydan okuma olduğunu garanti etmek için neredeyse yeterince zor bir önsöz, ancak golf biçiminde biraz daha karmaşık programlar yazmak için belirli bir sanat olduğunu düşünüyorum. En az karakter kazanır.
Direncin hesaplanması aşağıdaki iki formüle dayanır:
- Dirençler seri ise, direnç her bir direncin direncinin toplamıdır
- Dirençler paralel ise, direnç her bir direncin direncinin tersinin toplamının tersidir
Yani mesela:
Zorluğunuz, mümkün olan en az karakterde 64 dirence kadar bir grubun direncini hesaplamaktır. Karmaşıklık için özür dilerim, özellikle de giriş kurallarından. Onları her dilin kullanılabileceği şekilde tanımlamaya çalıştım.
Her direnç 2 veya daha fazla diğer dirence bağlanır.
Girişin, yalnızca bir giriş ve bir çıkış noktası ile geçerli olacağı garanti edilir.
Ağ, sunulanlardan daha fazla matematik gerektirmesini önlemek için seri paralel olacaktır
Giriş, dilinize neyin uygun olduğuna bağlı olarak dosya, argüman veya stdin aracılığıyla olacaktır.
Giriş, direncin direncinin bir tamsayısından ve direncin bir tarafının bağlı olduğu dirençlerin kimliklerini ayıran boşluklardan oluşan bir dizi satırsonu veya öne eğik çizgili ifadeden oluşur.
İlk direncin kimliği, birbirini izleyen her direnç için bir artarak 1 olacaktır.
Başlangıç her zaman 0 kimliğine sahip olacaktır
Son direnç her zaman 0 ohm'luk bir dirence sahip olacak ve sadece kendi hattında tanımlanan bağlantılara sahip olacak
Örneğin:
Olarak temsil edilebilir
3 0
6 1
1 0
5 0
0 2 3 4
- Çıktı stdout veya dosya olabilir. Aşağıdaki yollardan biriyle temsil edilebilir:
- En az 2 ondalık basamağa ve ardından yeni satıra sahip bir sayı
- Bir tamsayı (pay), bir eğik çizgi ve başka bir tamsayıdan (payda) oluşan bir kesir ve bunu bir satırsonu izler. Fraksiyonun en düşük formda olması gerekmez - örneğin 4/4 veya 10/8 kabul edilebilir. Kesir 1/100 içinde doğru olmalıdır. Mükemmel doğruluk için bir bonus yoktur - bu, sabit veya kayan nokta işlemleri olmayan dillerin rekabet etmesini sağlamak için bir koltuk değneği sağlar.
Umarım tüm noktaları kapsar. İyi şanslar!
1 2/1 0/0 1
geçerli?
/
ters eğik çizgi değildir. Şunu mu demek istediniz: `` ya da eğik çizgi?