MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

PL/SQLで数値が回文(パリンドローム)かどうかを確認する方法

この記事では、PL/SQLを使って数値が回文(パリンドローム)であるかどうかを判定する方法について解説します。PL/SQLでは、変数の宣言や処理命令など、関連する一連のコマンドをひとつのブロックとしてまとめて記述するのが特徴です。

回文とは、元の数値とその桁を逆に並べた数値が同じになる数のことです。たとえば「12321」は逆から読んでも12321なので回文ですが、「12345」は逆にすると54321となり一致しないため、回文ではありません。

判定の仕組み

数値が回文かどうかを確認する基本的な手順は以下の通りです。

  • 元の数値を比較用の変数にコピーして保存しておく
  • mod関数を使って最下位の桁(1の位)を1つずつ取り出す
  • 取り出した桁を、逆転用の変数に10倍しながら順次追加していく
  • trunc関数で数値を10で割り、処理済みの桁を取り除く
  • すべての桁を処理し終えたら、保存していた元の数値と逆転した数値を比較する

サンプルコード

DECLARE
    n number;
    m number;
    temp number:=0;
    rem number;
BEGIN
    n := 12321;
    m := n;
    while n > 0
    loop
        rem := mod(n, 10);
        temp := (temp * 10) + rem;
        n := trunc(n / 10);
    end loop;
    if m = temp
    then
        dbms_output.put_line('Palindrome');
    else
        dbms_output.put_line('Not Palindrome');
    end if;
END;

実行結果

Palindrome

コードの解説

まず変数mに元の数値12321をコピーして保存します。whileループ内では、mod(n, 10)によって1の位の数字を取り出し、tempに10倍して加算することで桁を逆転させていきます。また、trunc(n / 10)で小数点以下を切り捨てることで、すでに処理した桁を削除しています。

ループが終了した時点で、tempには元の数値の桁を完全に逆転させた値が入っています。ここでmとtempを比較し、両者が一致すれば「Palindrome」(回文)、一致しなければ「Not Palindrome」(回文ではない)というメッセージが出力されます。

  1. Pythonで文字列・数値が回文(パリンドローム)かどうかを判定する方法【スライス活用】

    本記事では、入力された文字列や数値が回文(パリンドローム)であるかどうかを判定するPythonプログラムの解決策とアプローチについて解説します。 問題の概要 文字列が入力として与えられたとき、それが回文であるかどうかを判定するPython関数を作成する必要があります。 回文とは、文字列を逆から読んでも元の文字列と完全に一致するものを指します。たとえば「78287」や「しんぶんし」などが代表的な例です。 解決のアプローチ 回文判定は、主に以下の2つの方法で実現できます。 スライスによる文字列の反転 負のインデックスを使った比較 本記事では、このうちスライスを使った文字列の反転方法を中心に

  2. 数値の2進表現が回文かどうかを判定するPythonプログラム

    ここでは、Pythonの組み込み関数を活用して、数値の2進表現が回文(パリンドローム)になっているかどうかを判定します。まず bin() 関数で数値を2進数形式の文字列に変換し、次にその文字列を反転させて元の文字列と比較します。両者が一致すれば回文、一致しなければ回文ではないと判断できます。 実行例 Input: 5 Output: palindrome 解説 数値 5 の2進表現は 101 です。 この文字列を反転しても 101 のままなので、元の文字列と一致します。 したがって、5 は回文であると判定されます。 アルゴリズム Palindromenumber(n) /* n は判定対