제 친구와 저는 AP 컴퓨터 과학 수업에서 실험실에서 일하고 있었고, 골프를 마친 후에도 여전히 반 수업을 무료로 제공했기 때문에 골프 문제 하나를 코딩하기로 결정했습니다. 질문은 다음과 같습니다.
숫자 n이 주어지면, n은 각 숫자로 나눌 수 있습니까?
예를 들어 128은이 테스트를 통과합니다. 1, 2, 8로 나눌 수 있습니다. 0이있는 숫자는 자동으로 숫자를 실격합니다. 원하는 경우 다른 언어를 사용하고 솔루션을 게시 할 수 있지만 클래스에서 사용하는 언어 인 컴팩트 한 프로그램을 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.
요구 사항
메소드 서명은 원하는대로 될 수 있습니다. 함수 본문을 세십시오. 그러나 메소드가 부울 값을 리턴하고 하나의 숫자 매개 변수 (문자열이 아님) 만 전달하는지 확인하십시오 .
코드는 원래의 질문의 방향에 충실하기 위해이 모든 경우를 (통과 할 수 있어야합니다, 단지 부울 true와 false 값은 계산 언어 지원의 부울. 만약의 경우 귀하의 언어는 부울 변수를 가지고 있지 않은 경우에만 0으로 false를 나타내고 0이 아닌 정수 (바람직하게는 1 또는 -1)로 true를 나타낼 수 있습니다.
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 / falsy 값 확인도? 3.java
챌린지 자체가 Java와 관련이 없으므로 태그는 실제로 적용되지 않습니다.