Bir dizi kullanarak-olmadan-numaralar-basamak- kötü-kader esinlenerek esinlenerek , ama SO sorudan daha iyi bir kod golf yaptığını düşündüm.
Pozitif bir tamsayı verildiğinde, o tamsayıdaki basamakları sıralayın.
En düşük puan kazanır!
- 0 puanla başlayın.
- Karakter başına bir nokta ekleyin.
- Kullandığınız her dizi için 20 puan ekleyin.
- Kodunuzdaki her çok karakterli dize için 10 nokta ekleyin. (İlk giriş dışında, üzerinde başka bir işlem yapılmadan bir tam sayıya dönüştürüldüğü sürece.)
- Programınızın kullanabileceği maksimum basamak sayısı programınızla sınırlıysa (makinenin aksine) 32 puan ekleyin.
- Kodunuz başka bir bağımsız değişken verilen sıralamanın yönünü değiştirebilirse 10 puan çıkarın (ne isterseniz, ancak örneğin azalan sıralama için 0 ve artan için 1).
Her dil farklıdır, ancak fikir, her türlü basamaklı hack'lerden kaçınmaktır.
Misal:
Giriş : 52146729
Çıktı : 97654221 veya 12245679
Notlar:
- Programlama dilinizin sağladığı herhangi bir yerleşik sıralama özelliğini kullanın, ancak bu sıralama özelliği dizeler veya diziler içeriyorsa cezayı alın!
- Çözümü, bir tamsayıyı doğrudan alan bir işlev olarak ya da argv, bir dosya veya akıştan bağımsız değişken alan ve bir tamsayıya dönüştüren bir program olarak yazabilirsiniz. Hemen bir tamsayıya dönüştürdüğünüz ve üzerinde başka bir işlem yapmadan orijinal karakter * girişini attığınız sürece herhangi bir ceza uygulanmaz.
- Cezalar yalnızca program metninizdeki dize değişmez değerleri için değil, program özelliğinizin bir dizeyi veya yinelenebilir bir şekilde girilen veya çıkaran herhangi bir bölümü için de geçerlidir. Örneğin, JavaScript'in
String.prototype.split
input (this
) olarak en az bir dizesi ve output olarak bir Array'ı vardır, dolayısıyla bunu kullanmak için +30'dur. - Ben bu kuralları ilk / son I / O (dolayısıyla nota 2) değil, algoritma tasarımı ilkesi rehberlik yapmaya çalıştım. Bu ifade programın ilk giriş noktası olduğu sürece, imzasının bir dize döndürdüğünü söylüyorsa
int(input())
bile cezanın uygulanması gerektiğini düşünmüyorum . Benzer şekilde, programın son çıktısı bir dize ise ve olması gerekiyorsa, ceza son hendek döküm işlemi için geçerli değildir. Bütün bunlar, bunun bir program olması gerektiğini ya da G / Ç'nin gelmesi ya da gitmesi gerektiğini açıkça söylemedim . Anı alan ve döndüren bir işlev bu belirsizlikten muzdarip olmazdı.input
print(x)
x
int
int
" "
olarak sayılır mı ? Tek bir karakter "çoklu" olarak kabul edilmez ...