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

Bashプログラムで数値が回文かどうかを確認する方法

数値が回文(パリンドローム)であるかどうかを確認するには、まずその数値を逆順に並べ替えます。そして、元の数値と逆順にした数値が一致すれば、それは回文です。例えば「12321」は逆から読んでも「12321」となるため、回文であると言えます。

Bashでは、この反転処理を非常に簡単に行うことができます。revコマンドを使えば、標準入力として渡されたテキスト(数値を含む)を1行ごとに逆順に出力してくれます。実際に、echoで数値を出力し、パイプ(|)を使ってrevコマンドへ渡すことで、逆順の数値を取得できます。

それでは、具体的なプログラムを見てみましょう。

サンプルコード

#!/bin/bash
# GNU bash スクリプト
n=12321
rev=$(echo $n | rev)
if [ $n -eq $rev ]; then
    echo "Number is palindrome"
else
    echo "Number is not palindrome"
fi

実行結果

Number is palindrome

プログラムの解説

  • n=12321:判定対象となる数値を変数nに代入します。
  • rev=$(echo $n | rev)echoで数値を出力し、パイプ経由でrevコマンドに渡すことで、逆順の数値を取得して変数revに格納します。
  • if [ $n -eq $rev ]:数値比較演算子-eqを使って、元の数値と逆順の数値が等しいかどうかを判定します。
  • 両者が一致すれば「Number is palindrome」(回文です)、一致しなければ「Number is not palindrome」(回文ではありません)と出力されます。

なお、revコマンドはGNU coreutilsに含まれるツールのため、多くのLinuxディストリビューションで追加インストールなしに利用できます。また、この手法は数値だけでなく文字列の回文判定にも応用可能ですが、その場合は数値比較演算子-eqではなく、文字列比較演算子=を使用してください。

  1. C言語でプラス完全数(Armstrong数)を判定するプログラム

    n桁の整数xが与えられたとき、その数が「プラス完全数(Plus Perfect Number)」であるかどうかを判定するのが本記事のテーマです。プラス完全数とは、各桁の数字dを桁数nでべき乗した値(dn)をすべて合計し、その合計が元の数と一致する場合を指します。この考え方は、いわゆる「Armstrong数(ナルシシスト数)」の判定とまったく同じものです。 具体例 入力:163 出力:完全数ではない 説明:1³ + 6³ + 3³ = 244 となり、163と一致しないため 入力:371 出力:完全数である 説明:3³ + 7³ + 1³ = 371 となり、元の数と一致するため 上記の例のよ

  2. 指定された文字列が母音回文であるかどうかを確認するPythonプログラム

    はじめに この記事では、「与えられた文字列から子音をすべて取り除いたとき、残った母音だけの文字列が回文になっているかどうかを判定する」という問題を、Pythonプログラムで解く方法を解説します。 問題の概要 問題文:母音と子音の両方を含む文字列が与えられます。まず文字列からすべての子音を取り除き、その結果得られた文字列が回文(前から読んでも後ろから読んでも同じ並びになる文字列)であるかどうかを確認してください。 解決のアプローチ この問題は、以下の手順で解くことができます。 元の文字列を先頭から順に走査し、母音(a・e・i・o・u)だけを取り出して新しい文字列を作成します。 母音が1つも