Giriş:
Twitter ve Instagram ve diğerleri gibi ben gibi sayıları görüntülemek istedi 1.2Kve 3.8 Myerine 1,222ya 3,823,456.
Ama hepsi bu değil! Hepimizin bildiği gibi, kuşkusuz bu kısaltmaları sevmeyecek ve onları tersine çevirmeye çalışan bazı insanlar olabilir . Böylece, 1.2kolacak 1,200ve 3.8 Molacak 3,800,000.
Görev:
- sizin göreviniz, bir sayı listesini ( dize olarak verilir ) kısaltma çiftlerine veya tam tersine dönüştüren bir program veya işlev yazmaktır .
Örneğin, giriş listesi (veya herhangi biri STDIN) ise ['1.4k', '1,234,567', '7.99M'], çıktı almalısınız:
['1,400', '1.2M', '7,990,000']
Kısaltmalar için bir sonraki şemayı takip edebilirsiniz:
- 10 3 -> bir kilo -> K
- 10 6 -> bir milyon -> M
- 10 9 -> bir milyar -> B
Kodunuz giriş için tüm küçük harfleri, büyük harfleri, karışık harfleri veya tanımsız harfleri varsayabilir ve çıktı için bunlardan herhangi birini kullanabilir, ancak tutarlı olmalıdır.
Kurallar ve kısıtlamalar:
- bir program veya işlev yazabilir,
STDIN(veya en yakın alternatif), komut satırı bağımsız değişkenini veya işlev bağımsız değişkenini girerek ve sonucuSTDOUT(veya en yakın alternatif), işlev dönüş değeri veya işlev (çıkış) parametresi aracılığıyla çıkarabilirsiniz. - girdi herhangi bir uygun liste veya dize biçiminde olabilir. Her birinin daha küçük olduğunu ve listenin en az bir öğe içerdiğini varsayabilirsiniz .
ai231 - Her kısaltılmış numara içerecektir sadece bir
.normal sayıda içerecektir ederken birçok olarak,gerektiği kadar (bu sayılar değişmiş olmayacak varsayabiliriz olabilir). - Eğer OLMAYABİLİR olarak bir sayı girin
'123456'ziyade123,456 - standart kod golf kuralları geçerlidir.
Test senaryoları:
Input: ['1.5M', '77.6k', '123,456,789'] Output: ['1,500,000', '77,600', '123.4M']
Input: ['3,000,000,000', '581k', '2b'] Output: ['3B', '581,000', '2,000,000,000']
Input: ['0.1k'] Output: ['100']
Input: ['888', '33'] Output: ['0.888k', '0.033k']
Açıklamalar:
- kısaltma çıktısında ondalık noktadan sonraki <1000 sayıları için, doğru sonucu elde etmek için gereken sayıda basamağa sahip olmalısınız. (örneğin:
2-> olacak0.002k) - bu en fazla 3 ondalık sayı anlamına gelir ; 1000'den büyük sayılar için en fazla 1 ondalık basamak kullanabilirsiniz . - kısaltma hem küçük hem de büyük harf olabilir
- Yorumlarda önerildiği gibi yerleşik kısıtlamayı kaldırdım
Bayttaki en kısa kod kazanır!
'123,456,789' -> '123.4M'? Ayrıca, kaç ondalık basamak kullanılacağı açık değildir. Elbette 1000'in altındaki herhangi bir şeyin kısaltılması gerekmez.
["k", "M", "G"]. "Normal bir sayı gerektiği kadar çok içerecek olsa da " ne demek, ülkemde herhangi birini kullanmak bir hata olur.