Mein Freund und ich arbeiteten an einem Labor in unserer AP-Informatik-Klasse und beschlossen, Golf als Problem zu codieren, da wir noch die Hälfte der Klasse frei hatten, nachdem wir fertig waren. Hier ist die Frage:
Ist n bei einer gegebenen Zahl n durch jede seiner Ziffern teilbar?
Zum Beispiel bestehen 128 diesen Test - er ist durch 1,2 und 8 teilbar. Alle Zahlen mit einer Null disqualifizieren die Zahl automatisch. Wenn Sie möchten, können Sie auch andere Sprachen verwenden und Lösungen veröffentlichen. Wir sind jedoch am meisten daran interessiert, wie kompakt Leute das Programm in Java erstellen können, da dies die Sprache ist, die wir in der Klasse verwenden. Bisher haben wir beide 51. Hier ist mein aktueller Code:
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.
Bedarf
Die Methodensignatur kann beliebig sein. Zählen Sie einfach den Funktionskörper. Stellen Sie jedoch sicher, dass die Methode einen booleschen Wert zurückgibt und nur einen numerischen Parameter (keine Zeichenfolge) übergibt .
Der Code muss in der Lage sein, alle diese Fälle zu übergeben (um den Anweisungen der ursprünglichen Frage gerecht zu werden, zählen nur boolesche wahre und falsche Werte, wenn die Sprache boolesche Werte unterstützt. Wenn und nur wenn Ihre Sprache keine booleschen Variablen enthält) kann false mit 0 und true mit einer beliebigen Ganzzahl ungleich Null (vorzugsweise 1 oder -1) darstellen:
128 -> true
12 -> true
120 -> false
122 -> true
13 -> false
32 -> false
22 -> true
42 -> false
212 -> true
213 -> false
162 -> true
204 -> false
Außerdem haben wir keine Leerzeichen gezählt. Sie können dies auch tun, es sei denn, die Leerzeichen sind für die Funktionsweise des Programms von wesentlicher Bedeutung (daher zählen in Java keine Zeilenumbrüche, sondern nur ein Leerzeichen zwischen int
und x=1
.). Viel Glück !
0
Ziffern, die ein Vielfaches von jeder von ihnen ist), stelle ich mir vor, dass die meisten Antworten auf uninteressante Weise nur länger werden würden, um einen Check dafür einzuschließen. Daher gefällt mir das Problem, das sich aus dem Titel ergibt, besser (teilbar durch seine Ziffern, anstatt ein Vielfaches seiner Ziffern zu sein, das 0 ausschließt).
true
undfalse
oder sind die wahrheitsgemäßen / falschen Werte auch in Ordnung? 3. Dasjava
Tag trifft hier nicht wirklich zu, da die Herausforderung selbst nichts mit Java zu tun hat.