Perl Weekly Challenge 095 풀기 -- 회문 수와 스택

2973 단어 raku
Perl Weekly Challenge 095 의 두 가지 기본 작업 . 회문 번호도 leetcode: leetcode/palindrome-number 에 있습니다. 자동으로 값을 Int/Str로 강제 변환하는 언어의 경우 이 두 작업에는 너무 많은 코드가 필요하지 않습니다.

작업 #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 -- 回文數與堆疊 》之英文版

좋은 웹페이지 즐겨찾기