Format yöntemini ters çevirin.
FormatString sınıfının (veya equivallent gibi bir yöntem sprintf) çoğu dilde mevcuttur. Temel olarak, fazladan biçimlendirmeye sahip yer tutucular içerebilen ve bu yer tutucular yerine sıfır veya daha fazla değer eklenebilecek bir "Biçim" dizesi alır.
Göreviniz, ters işlevi tercih ettiğiniz dilde uygulamaktır.
API
Yöntem adı format1veya olmalıdır deformat.
Girdi : 1. parametre tıpkı orijinal biçim yönteminde olduğu gibi "Biçim" dizesi olacaktır. 2. parametre ayrıştırılmış dize olacaktır (aşağıdaki örneklere bakın). Başka hiçbir parametreye gerek yoktur.
Çıktı : biçimdeki yer tutucularla ilgili olarak çıkarılan değer dizisi (veya seçtiğiniz dilin eşdeğeri).
Tutuculardır {0}, {1}, {2}vb
Kötü biçim durumunda bir hata atabilir veya istediğinizi geri gönderebilirsiniz.
Geçersiz giriş durumunda bir hata atabilir veya istediğinizi geri gönderebilirsiniz. Geçersiz giriş, örneğin, aynı dizgi formatı kullanılarak String.Format tarafından oluşturulan edilemez şekildedir: '{0}{0}', 'AAB'.
Örnekler
deformat('{0} {1}', 'hello world') => ['hello', 'world']
deformat('http{0}://', 'https://') => ['s']
deformat('http{0}://', 'http://') => [''] // array of one item which is an empty string
deformat('{0}{1}{0}', 'ABBA') => ['A', 'BB']
belirsizlik
Belirsizlik durumunda, uygun bir cevap verebilirsiniz. Örneğin:
deformat('{0} {1}', 'Edsger W. Dijkstra')
// both ['Edsger', 'W. Dijkstra'] and ['Edsger W.', 'Dijkstra'] are applicable.
Bazı Kurallar
- Bunu kolaylaştırmak için biçimlendirmeyi desteklemeye gerek yoktur. Baştaki sıfırlar, ondalık nokta veya yuvarlama sorunları hakkında her şeyi unutabilirsiniz. Değerleri dize olarak oluşturmanız yeterlidir.
- Önemsiz kılmak için Düzenli İfadelere izin verilmez .
- Girişteki kıvırcık parantezlere dikkat etmeniz gerekmez (örn. 2. giriş parametresi herhangi bir
{s veya}s içermez ).
Kazanan
Bu kod golfü ! ("Bu Sparta!" olarak okunmalıdır) en kısa uzunlukta doğru fonksiyon kazanır. Standart boşluklar yasaktır.
['', 'AAAA'], ['A', 'AA'],['AA', '']
deformat('{0}{1}{0}', 'ABBA') => ['', 'ABBA']mi? Öyleyse, her dize en az iki kez görünmedikçe ucuz bir çözüm vardır.
deformat('{0}_{1}_{0}', 'A_BB_A')mı?
deformat('{0}{1}{0}', 'ABBA') => ['A', 'BB'], bize bunun yerine verilseydikdeformat('{0}{1}{0}', 'AAAA')?