Mój przyjaciel i ja pracowaliśmy w laboratorium na naszej zajęciach z informatyki AP i postanowiliśmy zakodować jeden z problemów, ponieważ nadal mieliśmy połowę zajęć po zakończeniu. Oto pytanie:
Biorąc pod uwagę liczbę n, czy n jest podzielne przez każdą z jej cyfr?
Na przykład 128 przejdzie ten test - dzieli się go przez 1,2 i 8. Wszelkie liczby z zerem automatycznie dyskwalifikują liczbę. Chociaż możesz używać innych języków i publikować w nich rozwiązania, jeśli chcesz, najbardziej interesuje nas to, jak kompaktowi ludzie mogą tworzyć program w Javie, ponieważ jest to język, którego używamy w klasie. Jak dotąd oboje mamy 51. Oto mój obecny kod:
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.
Wymagania
Podpis metody może być dowolny. Po prostu policz ciało funkcji. Upewnij się jednak, że metoda zwraca wartość logiczną i przekazuje tylko jeden parametr numeryczny (nie ciąg znaków).
Kod musi być w stanie przekazać wszystkie te przypadki (aby zachować zgodność z kierunkami pierwotnego pytania, tylko logiczne wartości prawda i fałsz liczą się, jeśli język obsługuje wartości logiczne. Jeśli i tylko wtedy, gdy twój język nie ma zmiennych boolowskich, ty może reprezentować false z 0 i true z dowolną niezerową liczbą całkowitą (najlepiej 1 lub -1):
128 -> true
12 -> true
120 -> false
122 -> true
13 -> false
32 -> false
22 -> true
42 -> false
212 -> true
213 -> false
162 -> true
204 -> false
Nie liczyliśmy też spacji, więc możesz zrobić to samo, chyba że spacja jest niezbędna do działania programu (więc nowe wiersze w Javie się nie liczą, ale jedna spacja między inti x=1ma znaczenie.) Powodzenia !
0cyframi będąca wielokrotnością każdej z nich), wyobrażam sobie, że większość odpowiedzi wydłużyłaby się w nieciekawy sposób, aby włączyć sprawdzenie. Dlatego bardziej podoba mi się problem związany z tytułem (podzielny przez cyfry, a nie wielokrotność jego cyfr, co wyklucza 0).
trueifalseczy wartości prawdy / fałszu również są w porządku? 3.javaZnacznik tak naprawdę nie ma tu zastosowania, ponieważ samo wyzwanie nie jest związane z Javą.