100回の回文を入手してください

100回の回文を入手してください

私はスクリプトに初めて触れ、私の使命は100を見つけることです。回門次のアルゴリズムを使用する数値:

  1. 2つの乱数を取得します(10より大きい)。
  2. リバース番号
  3. 数字とその逆数を加える
  4. 合意結果が回文の場合は印刷してください。それ以外の場合は、ステップ2に戻ります。

たとえば、

  • 開始数量:75
  • 裏面は57
  • 合計は 75+57 = 132 です。

132は回文番号ではないため、ステップ2に戻ります。

  • その反対は321です。
  • 132+321=363
  • 363は回文数です。標準出力で印刷してください!

そして、そのような数字が100個まで印刷されるまで続きます。


これが私が今まで持っているものです:

#! /bin/bash

CONT=0
while [ $CONT -lt 100 ] 
do
    NUM= $RANDOM
    while [ $SUM -ne $SUMINV ] 
    do

        echo $NUM > file.txt
        INV= rev file.txt
        SUM= `expr[ $NUM + $INV ]`
        echo $SUM > file2.txt
        SUMINV= rev file2.txt
        NUM= $SUM
    done
    echo $NUM
    CONT=`expr $CONT + 1`
done

このスクリプトの解決策と助けを探しています!

ベストアンサー1

私が知るには、まず2桁の数字を受け取る必要があります。

  • 10より大きい 100より小さい
  • 10で割らない(20、30などではない)
  • 回門ではない(22、33などではありません)

だからあなたはそれを通して到達することができます

while :
do
  a=$[$RANDOM%10]
  b=$[$RANDOM%10]
  if [ $a -ne $b -a $a -ne 0 -a $b -ne 0 ]
  then
    NUM="$a$b"
    RNUM="$b$a"
    break
  fi
done

次に、数字の合計と反転を確認してください。

while :
do
  NUM=$[$NUM+$RNUM]
  RNUM=$(printf "%d" $NUM | rev)
  if [ $NUM -eq $RNUM ]
  then
    echo $NUM
    break
  fi
done

おすすめ記事