Ми з моїм другом працювали в лабораторії в нашому класі комп'ютерних наук AP і вирішили зашифрувати один з проблем, оскільки після закінчення ми все ще мали половину класу. Ось питання:
Враховуючи число n, чи поділяється n кожну його цифру?
Наприклад, 128 пройде цей тест - він ділиться на 1,2 та 8. Будь-які числа з нулем автоматично дискваліфікують число. Хоча ви можете використовувати інші мови та розміщувати з ними рішення, якщо вам подобається, ми найбільше зацікавлені в тому, як компактні люди можуть скласти програму на Java, як це мова, якою ми користуємось у класі. Поки у нас обох 51. Ось мій поточний код:
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.
Вимоги
Підпис методу може бути будь-яким, що ви хочете. Просто порахуйте тіло функції. Переконайтеся, що метод повертає булеве значення і передає лише один числовий параметр (а не рядок).
Код повинен бути в змозі передавати всі ці випадки (для того, щоб залишатись вірними вказівкам оригінального запитання, враховуються лише булеві істинні та помилкові значення, якщо мова підтримує булеві значення. Якщо і лише якщо ваша мова не має булевих змінних, ви може представляти помилкове з 0 та істинне з будь-яким ненульовим цілим числом (переважно, 1 або -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
Крім того, ми не враховували пробіли, тому не соромтесь робити те ж саме, якщо пробіл не є важливим для роботи програми (тому нові рядки на Java не враховуються, але єдиний пробіл між int
і x=1
не рахується.) Удачі !
0
цифрами, яке є кратним кожної з них), я думаю, що більшість відповідей просто не триватиме нецікавим чином, щоб включити чек на нього. Тож мені подобається, що проблема, поставлена назви, краще (ділиться на її цифри, а не бути кратним її цифрам, що виключає 0).
true
іfalse
чи добре також є значення " truthy / false" ? 3.java
Тег дійсно не застосовується тут, оскільки сам виклик не пов'язаний з Java.