Arkadaşım ve ben AP Computer Science sınıfımızdaki bir laboratuarda çalışıyorduk ve bir tanesini problemleri kodlamaya karar verdik, çünkü sınıfımızın yarısını bitirdikten sonra hala sınıfın yarısı boş kaldı. İşte soru:
Bir sayı n verildiğinde, n rakamlarının her biri tarafından bölünebilir mi?
Örneğin, 128 bu testi geçecek - 1,2 ve 8 ile bölünebilir. Sıfır olan herhangi bir sayı otomatik olarak sayıyı diskalifiye eder. İsterseniz diğer dilleri kullanabilir ve onlarla çözüm gönderebilirsiniz, ancak sınıfta kullandığımız dil olduğu gibi insanların Java'da programı nasıl kompakt hale getirebileceğini görmekle ilgileniyoruz. Şimdiye kadar ikimizde 51 var. İşte benim kodum:
public boolean dividesSelf(int n){for(int p=n;n%10>0;)n/=p%(n%10)>0?.1:10;return n<1;}
// 51 characters
// Breakdown:
// for(int p=n; Saves one semicolon to put declaration into for loop
// n%10>0;) Basic check-for-zero
// n/= Pretty simple, discarding one number off of n at a time
// p%(n%10)>0? If p (the given value) is not divisible by n%10 (the current digit)...
// .1:10; Divide by .1 (multiply by 10) so it fails the check next iteration. If it is divisible, divide by 10 to truncate the last digit
// return n<1 If the number was fully divisible, every digit would be truncated, and n would be 0. Else, there would still be non-zero digits.
Gereksinimler
Yöntem imzası, istediğiniz ne olabilir. Sadece fonksiyon gövdesini say. Ancak, yöntemin bir boolean değeri döndürdüğünden ve yalnızca bir sayısal parametrede (bir dize değil) geçtiğinden emin olun .
Kod, tüm bu durumları geçebilmelidir (orijinal sorunun yönlerine sadık kalabilmek için , dil booleanleri destekliyorsa , yalnızca boolean doğru ve yanlış değerler sayılır. sıfırla yanlış temsil edebilir ve sıfır olmayan bir tamsayıyla true (tercihen 1 veya -1) olabilir:
128 -> true
12 -> true
120 -> false
122 -> true
13 -> false
32 -> false
22 -> true
42 -> false
212 -> true
213 -> false
162 -> true
204 -> false
Ayrıca, boşlukları saymadık, bu yüzden programın çalışması için boşluklar gerekli olmadıkça aynı şeyi yapmaktan çekinmeyin (Java'daki yeni satırlar sayılmaz, ancak aralarındaki int
ve arasındaki tek bir boşluk var x=1
.) İyi şanslar !
0
(her birinin bir katı olan rakam olan tek sayıdır ), çoğu cevabın, bir çek eklemek için ilginç olmayan bir şekilde daha uzun olacağını tahmin ediyorum. Bu yüzden, başlığın ortaya koyduğu problemi daha iyi seviyorum (rakamın bir katı olmak yerine, 0 rakamı hariç olmak üzere rakamlarıyla bölünebilir).
true
vefalse
ya vardır truthy / falsy değerler TAMAM yanı? 3.java
Etiket burada gerçekten geçerli değildir, çünkü meydan okuma Java ile ilişkili değildir.