Giriş:
Kıvrımlı bulmacalar topluyorum. Bükülen bulmacaların çoğu Çinli şirketler tarafından üretilir ve satılır. En tanınmış şirketler tasarımlarını üretmek ve pazardaki bir ürün üzerinde birlikte çalışmak için bulmaca tasarımcılarından izin ister. Bu durumda, bulmaca tasarımcıları elbette bulmacalarından birinin pazara girmesinden çok mutlu ve gururlu.
Bununla birlikte, nakavt bulmacaları yapan Çinli şirketler de var. Bu vuruntular ya orijinal içerik oluşturucunun izni olmadan kullanılan tasarımlardır ya da mevcut bulmacaların düpedüz, daha düşük kaliteli kopyalarıdır.
Meydan okuma:
Belirli bir düzende (soldan sağa † ) serbest bırakılan sayıların özgünlüğünü belirleyeceğiz .
Tamsayıların bir listesi verildiğinde, özgünlüklerine göre gruplandırın ve çıktı alın.
Sayıların özgünlüğü nasıl belirlenir?
- Sayı, önceki sayının tam bir kopyası mı? Grup (en az orijinal), burada grubu diğer gruplardan sonra devam eder.
- Bir sayı önceki bir sayının kopyası mı, bunun yerine negatif mi (yani orijinal sayı , ama şimdi ; ya da tam tersi)? Grup .
- Sayının mutlak değeri, bir veya daha fazla önceki mutlak sayıyı birleştirerek oluşturulabilir mi ve daha önce bahsedilen veya gruplarının bir parçası değil mi? Grup , burada , birleştirme işleminde kullanılan ayrı sayıların miktarıdır (ve ).
- Sayı yukarıdaki grupların hiçbirine uymuyor mu, şimdiye kadar tamamen benzersiz mi? Grup (en orijinal), diğer gruplardan önce lider.
Bu oldukça belirsiz gelebilir, bu yüzden burada adım adım bir örnek :
Girdi-listesi: [34,9,4,-34,19,-199,34,-213,94,1934499,213,3,21,-2134,44449,44]
34
her zaman orijinal olan ve grup ilk sayıdır . Çıktı şimdiye kadar:[[34]]
9
ayrıca orijinal:[[34,9]]
4
ayrıca orijinal:[[34,9,4]]
-34
önceki sayının negatifidir34
, bu nedenle grubundadır :[[34,9,4],[-34]]
19
orijinal:[[34,9,4,19],[-34]]
-199
önceki iki sayıdan oluşabilir19
ve9
bu grubundadır :[[34,9,4,19],[-199],[-34]]
34
önceki bir sayının tam kopyasıdır, bu nedenle grubundadır :[[34,9,4,19],[-199],[-34],[34]]
-213
orijinal:[[34,9,4,19,-213],[-199],[-34],[34]]
94
önceki iki sayıdan oluşabilir9
ve4
bu grubundadır :[[34,9,4,19,-213],[-199,94],[-34],[34]]
1934499
Dört önceki sayılarla oluşturulabilir19
,34
,4
ve iki kere9
, bu gruptaki yüzden :[[34,9,4,19,-213],[19499],[-199,94],[-34],[34]]
213
önceki sayının negatifidir-213
, bu nedenle grubundadır :[[34,9,4,19,-213],[1934499],[-199,94],[-34,213],[34]]
3
orijinal:[[34,9,4,19,-213,3],[1934499],[-199,94],[-34,213],[34]]
21
orijinal:[[34,9,4,19,-213,3,21],[1934499],[-199,94],[-34,213],[34]]
-2134
daha önceki iki sayılarla oluşturulabilir213
ve4
(veya üç önceki sayılar21
,3
ve4
, fakat her zaman özgünlük belirlemek için numaralar birleştirerek en az miktarda kullanın) o grupta yüzden, :[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134],[-34,213],[34]]
44449
önceki iki sayıyla dört kez oluşturulabilir4
ve9
bu nedenle grubundadır :[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[-34,213],[34]]
44
4
iki kez tekrarlanan daha önceki tek bir sayıdan oluşabilir , bu nedenle grubunda :[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[44],[-34,213],[34]]
Yani giriş [34,9,4,-34,19,-199,34,-213,94,1934499,213,3,21,-2134,44449,44]
için çıkış olur [[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[44],[-34,213],[34]]
.
Zorluk kuralları:
- G / Ç esnektir. Tamsayıların veya dizelerin bir listesi / dizisi / akışı olarak girebilir, bunları STDIN, vb. Aracılığıyla tek tek girebilirsiniz. Çıktı, anahtar olarak gruplar, örnek olarak iç içe bir liste ve bu meydan okumadaki test senaryoları, basılı olabilir yeni satır ayrılmış, vb.
- Giriş listesini ters sırayla almanıza izin verilir (belki de yığın tabanlı diller için yararlıdır). † Bu durumda, bahsedilen soldan sağa elbette sağdan sola olur.
- Eğer tamsayı için örneğe görebileceğiniz gibi
-2134
, her zaman grubunun birkaç mümkün olduğunca diğer sayıların bir birleşimidir numarası (oluşturduğu213
ve4
- iki sayıdan ve vermeyerek21
,3
ve4
- üç sayı). - Tamsayı örneğinde görebileceğiniz gibi,
1934499
önceki bir sayıyı (9
bu durumda) birden çok kez kullanabilirsiniz (44449
dört4
s ve a9
örnekte ). Ancak grubu belirlemek için sadece bir kez sayılırlar. - Boş gruplar için çıktıda boş iç listeler bulunmasına izin verilmez. Test durumda Böylece
[1,58,85,-8,5,8585,5885,518]
neden olmayabilir[[1,58,85,8,5],[518],[5885],[8585],[],[]]
, bunun yerine boş gruplardır ve ve sonuçlanmaz yukarıda örnek[[34,9,4,19,-213,3,21],[1934499],[],[-199,94,-2134,44449],[44],[-34,213],[34]]
boş gruptur, bunun yerine . - Grupların sırası katıdır (bir harita kullanmazsanız, gruplar daha sonra anahtarlardan çıkarılabilir), ancak bir grup içindeki sayıların sırası herhangi bir sırada olabilir. Dolayısıyla yukarıdaki örnekte yer alan
[34,9,4,19,-213,3,21]
grup için de[21,3,-213,19,4,9,34]
veya olabilir[-213,4,34,19,9,21,3]
. - Daha önce dokuzdan fazla sayıdan oluşabilecek hiçbir sayı olmayacağı garanti edilir. Hiç var asla Yani : grupları ve olası grupların büyük miktarda 12'dir
- Tamsayıların maksimum 32 bit olacağını, yani aralık içinde olduğunu varsayabilirsiniz
[−2147483648,2147483647]
.
Genel kurallar:
- Bu kod golf , bayt en kısa cevap kazanır.
Kod golf dillerinin, kod yazmayan dillerle yanıt göndermenizi engellemesine izin vermeyin. 'Herhangi bir' programlama dili için mümkün olduğunca kısa bir cevap bulmaya çalışın. - Varsayılan I / O kuralları ile cevabınız için standart kurallar geçerlidir , bu nedenle STDIN / STDOUT, fonksiyonlar / yöntem uygun parametreler ve dönüş tipi, tam programlar ile kullanılabilir. Çağrınız.
- Varsayılan Loopholes yasaktır.
- Mümkünse, lütfen kodunuz için bir test içeren bir bağlantı ekleyin (örn. TIO ).
- Ayrıca, cevabınız için bir açıklama eklemeniz şiddetle tavsiye edilir.
Test senaryoları:
Input: [34,9,4,-34,19,-199,34,-213,94,1934499,213,3,21,-2134,44449,44]
Output: [[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[44],[-34,213],[34]]
Input: [17,21,3,-317,317,2,3,117,14,-4,-232,-43,317]
Output: [[17,21,3,2,117,14,-4],[-317,-232,-43],[317],[3,317]]
Input: [2,4,8,10,12,-12,-102,488,10824]
Output: [[2,4,8,10,12],[10824],[-102,488],[-12]]
Input: [0,100,-100,10000,-100,1001000]
Output: [[0,100],[10000,1001000],[-100],[-100]]
Input: [1,58,85,-8,5,8585,5885,518]
Output: [[1,58,85,-8,5],[518],[5885],[8585]]
Input: [4,-4,44,5,54]
Output: [[4,5],[54],[44],[-4]]
X + 1
tam kopyalar için özel bir gruptur veX
bu tür onun yadsınması olarak tek bir numara kopyalarından oluşturulabilir diğer numaralar için bir gruptur?