(Bu benim ilk kod golf sorumu)
Çocukken, babam ve ben arabalarda gördüğümüz plakanın oldukça basit kurallara dayanarak bazı puanlar verebileceği bir oyun icat ettik:
Aynı harf veya sayıdaki X miktarı, X-1 puanını verir, örnekler:
22 = 1 point
aa = 1 point
5555 = 3 points
Sayıların birbirinin yanında olması gerekir, bu nedenle 3353
5, 3'lerin sırasını kırdığından yalnızca 1 puan verir.
En az 3 olmak üzere, artan veya azalan düzende bir X sayıları dizisi, X puanları verir, örnekler:
123 = 3 points
9753 = 4 points
147 = 3 points
Nokta sistemi sadece 1 basamaklı sayılar için çalışır, bu yüzden 1919
puan vermez ve 14710
sadece 3 (147) verir.
Daha fazla puan vermek için diziler birleştirilebilir, örnekler:
1135 = 4 points (1 point for 11 and 3 points for 135)
34543 = 6 points (3 points for 345 and 3 points for 543)
Bununla birlikte, ekstra noktalar için daha küçük bir diziyi 2 küçük diziye bölmenize 1234 = 123, 234 (6 points)
izin verilmez : izin verilmez.
Göreviniz, plakanın verdiği puan sayısını belirlemek için bir sıra verilir.
Danimarka'da, plakalar şu şekilde yapılandırılmıştır: C II ve I'nin tamsayı olduğu CC II III, bu nedenle örnek girdilerim bu yapıyı yansıtacaktır. Arzu ederseniz, diziyi kendi yapınıza uygun hale getirebilir veya gerçekten maceracı hissediyorsanız, programın plakanın yapısını analiz etmesine izin verin ve böylece dünyanın her yerindeki herhangi bir plakanın üzerinde çalışmasını sağlayın. Ancak cevabınızda kullanmaya karar verdiğiniz yapıyı açıkça belirtiniz.
İstediğiniz herhangi bir şekilde girişi alabilirsiniz, bir dize veya bir dizi bana en anlamlı geliyor.
Test girişi | çıktı:
AA 11 111 | 5
AB 15 436 | 3
OJ 82 645 | 0
UI 65 456 | 6
HH 45 670 | 5
YH 00 244 | 5
AJ 00 754 | 1
Kendi yapınızı seçme ve hatta tüm yapıları kapsayan doğa nedeniyle, bir kazananın açıkça nasıl belirlenebileceğini görmüyorum. Galiba bir karar vermiş olan yapıdaki en kısa bayt olacak. (Ve sadece kendiniz için kolaylaştırmak için CICIC gibi bir giriş yapmayın)
DÜZENLE:
Soran yorumlar nedeniyle, paylaşılacak birkaç ekstra bilgi parçam var: Artan veya azalan bir sayı dizisi aritmetik bir diziyi belirtir, yani X +/- a * 0, X +/- a * 1, ... X +/- a * n vb. Öyleyse 3-5-7, örneğin 3 + 2 * 0, 3 + 2 * 1, 3 + 2 * 2'dir. Ancak, dizinin 0'dan başlaması veya sonunda bitmesi gerekmez. 0.
DAHA FAZLASI:
Girişinizi istediğiniz şekilde verebilirsiniz, boşluk, çizgi veya bir plakanın daha okunaklı olmasını sağlayan başka bir şey girmenize gerek yoktur. Baytları yalnızca büyük harfleri veya bunun gibi bir şeyi kabul ederek kurtarabilirseniz, bunu da yapabilirsiniz. Tek gereksinim programınızın hem karakter hem de sayı içeren bir dize / dizi / herhangi bir şey alabilmesi ve belirtilen kurallara göre doğru miktarda puan verebilmesidir.
XX 87 654
. Tüm test durumlarınız için doğru olan bir şey buldum, bunun için bir şekilde yanlış oldum .. Tamir etmeye çalışıyorum.
CCIIIII
, boşluk yok), ya da bu problem burada ihtiyaç duyduğumuz objektif bir kazanma kriterinden yoksundur. “(CICIC gibi bir girişi almayın, sadece kendiniz için kolaylaştırmak için)” olduğu gibi çok özneldir. Kabul edilebilir bir yapı nedir ve ne değildir?
IA99999
(azalan bir kod noktası sırası içeriyor, ancak sayı değil).