我必須撰寫一個命令列,在兩個不同的自定義基礎中獲取兩個數字并在第三個中輸出。
通過自定義基礎,我的意思是我有這樣的事情:
- 輸入基數 1:“!?\
- 輸入基數 2:ajedpoi
- 輸出:rAfeB oiX
所以從那開始,我想這bc沒有幫助,對吧?
有這樣的命令還是我應該撰寫一些自定義腳本?你能給我一些線索嗎?我完全迷路了。
編輯:練習的確切說明是:
撰寫一個命令列,從變數 FT_NBR1(在 '"?! base 中)和 FT_NBR2(在 mrdoc 庫中)獲取數字,并在 gtaio luSnemf 庫中顯示兩者的總和。
在某種程度上,具有以下值:
FT_NBR1=\'?"\"'\
FT_NBR2=rcrdmddd
我會得到以下輸出:
Salut
uj5u.com熱心網友回復:
如何將字串789轉換為數字?
嗯,789 等于
7 × 10 2 8 × 10 1 9 × 10 0
但是我們正在撰寫一個程式,并且我們想要利用回圈。
( ( 7 ) × 10 8 ) × 10 9
更好的是,
( ( ( 0 ) × 10 7 ) × 10 8 ) × 10 9
我們不是從數字和開始7,而是從它們的字串表示開始。89
(
(
(
0
) × 10 [ offset of "7" in "0123456789" ]
) × 10 [ offset of "8" in "0123456789" ]
) × 10 [ offset of "9" in "0123456789" ]
最后,讓我們去掉對 base 10 的最后一點依賴。
(
(
(
0
) × [ number of symbols in "0123456789" ] [ offset of "7" in "0123456789" ]
) × [ number of symbols in "0123456789" ] [ offset of "8" in "0123456789" ]
) × [ number of symbols in "0123456789" ] [ offset of "9" in "0123456789" ]
所以代碼看起來像這樣:
- 設定
n為 0。 - 設定
base為基礎中的符號數。 - 對于每個數字,
- 設定
n為 和 相乘的n結果base。 - 獲取構成基數的符號陣列中數字的偏移量。
- 設定
n為加法n和偏移量的結果。
- 設定
示例 Perl 實作:
my @syms = split //, "01234567890";
my %sym_offset = map { $syms[$_] => $_ } 0 .. $#syms;
my $s = "...";
my $n = 0;
for my $sym ( split //, $s ) {
my $offset = $sym_offset{ $sym };
$n = $n * @syms $offset;
}
$s = $syms[ 0 ] if !length( $s );
say $n;
可以采取與此程序相反的方法來獲取一個數字并將其轉換為基數。不是重復乘法,而是重復除法,使用余數作為構成基數的符號串列的索引。
- 設定
base為基礎中的符號數。 - 設定
s為空字串。 - 雖然
n大于零,- 求
n除以的余數base。 - 獲取在等于余數的偏移處找到的符號。
- 將符號添加到
s. - 設定
n為從 中減去余數的結果n。 - 設定
n為除以的n結果base。
- 求
- 如果
s是一個空字串,- 設定
s為第一個符號。
- 設定
示例 Perl 實作:
my @syms = split //, "01234567890";
my %sym_offset = map { $syms[$_] => $_ } 0 .. $#syms;
my $n = ...;
my $s = "";
while ( $n ) {
my $offset = $n % @syms;
$s = $syms[ $offset ] . $s;
$n = ( $n - $offset ) / @syms;
}
say $n;
uj5u.com熱心網友回復:
好吧,我不夠聰明。我可以tr做到bc
我用正常的數字tr來回轉換奇怪的“基數” 。bc
這是我所做的:
#!/bin/sh
NUM1=$(echo "$FT_NBR1" | tr \'\\\\\"\?\! '01234')
NUM2=$(echo "$FT_NBR2" | tr mrdoc '01234')
RES=$(echo "obase=13; ibase=5; $NUM1 $NUM2" | bc)
echo $RES | tr '0123456789abc' 'gtaio luSnemf'
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/453386.html
上一篇:什么是參考命令?
下一篇:什么是參考命令?
