Perl Weekly Challenge 095 풀기 -- 회문 수와 스택
2973 단어 raku
작업 #1 › 회문 번호
제출자: Mohammad S Anwar
번호 $N이 주어집니다.
주어진 숫자가 회문인지 알아내는 스크립트를 작성하십시오. 참이면 1을 출력하고 그렇지 않으면 0을 출력한다.
예 1:
Input: 1221
Output: 1
예 2:
Input: -101
Output: 0, since -101 and 101- are not the same.
예 3:
Input: 90
Output: 0
솔루션 #1 > 회문 번호
매우 간단합니다. 단순히 입력 숫자를 문자열로 변환한 다음 해당 문자열이 회문인지 확인하십시오. 예제에 따르면 모든 음수는 회문(palindromic)이 아닙니다. 소수점이 있는 숫자가 고려되는지 궁금합니다.
정수만 처리한다고 가정해 보겠습니다. Raku에서의 구현은 다음과 같습니다.
sub is-palindrome-number (Int $n --> Bool) {
return "$n" eq "$n".flip;
}
문자열 뒤집기 작업은 Raku의
flip
에서 Str
서브루틴에 해당합니다. 숫자$n
를 문자열로 변환하려면 $n.Str
또는 "$n"
가 필요합니다. (Int $n --> Bool)
라고 표시된 부분이 이 서브루틴의 서명입니다. 이는 서브루틴이 하나의 Int
인수를 취하고 Bool
(Boolean values. True
또는 False
)를 반환함을 의미합니다.작업 #2 › 데모 스택
제출자: Mohammad S Anwar
아래와 같이 스택 작업을 시연하는 스크립트를 작성하십시오.
push($n) - 스택에 $n 추가
pop() - 맨 위 요소 제거
top() - 최상위 요소를 가져옵니다.
min() - 최소 요소를 반환
예시:
my $stack = Stack->new;
$stack->push(2);
$stack->push(-1);
$stack->push(0);
$stack->pop; # removes 0
print $stack->top; # prints -1
$stack->push(0);
print $stack->min; # prints -1
솔루션 #2 > 데모 스택
위에서 언급한 메서드로 클래스를 정의하는 경우 모두 Raku의 하나의 서브루틴에 위임할 수 있습니다. 이
IntStack
를 예로 들어 보겠습니다. 스택은 많은 정수를 담을 수 있습니다.class IntStack {
has Int @!store;
method push(Int $n) {
@!store.push($n);
}
method pop(--> Int) {
@!store.pop;
}
method top(--> Int) {
@!store.tail;
}
method min(--> Int) {
@!store.min;
}
}
다음과 같이 사용할 수 있습니다.
my $stack = IntStack.new;
$stack.push(2);
$stack.push(-1);
$stack.push(0);
$stack.pop;
say $stack.top; #=> -1
$stack.push(0);
say $stack.min; #=> -1
本文為 《 解 Perl Weekly Challenge 095 -- 回文數與堆疊 》之英文版
Reference
이 문제에 관하여(Perl Weekly Challenge 095 풀기 -- 회문 수와 스택), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/gugod/solving-perl-weekly-challenge-095-palindrome-number-and-stack-3njh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)