部分文字列の乗算


11

入力として2つの整数を取るプログラムを作成します。最初の整数は任意の整数で、2番目の数値は最初の数値の桁数以下です。これらの数字abそれぞれとしましょう。

プログラムは次のことを行います

  • の最小桁数1sを連結して、a桁数がaで割り切れるようにしbます。
  • aすべてのb数字に沿って分割します。
  • 各セクションの数字を乗算します。
  • 製品を一緒に連結します(数値の1つがゼロの場合、連結します0)。
  • 厳密にb数字より少ない数字が形成されるまで、このプロセスを繰り返します。これを出力として印刷し、プロセスの数を繰り返します。単位は必要ありませんが、最終的な回数と反復回数の間の何らかの形式の分離が必要です。

次のテストケースでは、理解のために個々の手順を示しています。プログラムがステップを表示する必要はありません。

テストケース1

1883915502469, 3

手順

1883915502469          //Iteration 1
188391550246911
188 391 550 246 911
64 27 0 48 9
64270489               //Iteration 2
642704891
642 704 891
48 0 72
48072                  //Iteration 3
480721
480 721
0 14
014                    //Iteration 4
0

サンプル出力0, 4

テストケース2

792624998126442, 4

手順

792624998126442        //Iteration 1
7926249981264421
7926 2499 8126 4421
756 648 96 32
7566489632             //Iteration 2
756648963211
7566 4896 3211
1260 1728 6
126017286              //Iteration 3
126017286111
1260 1728 6111
0 112 6
01126                  //Iteration 4
01126111
0112 6111
0 6
06

サンプル出力06, 4


次の場合、プログラムはエラーを返す必要があります(または単に何も出力しない)b>len(a)。また、b1に等しくすることはできません。そうしないと、プログラムは無限ループになります。


これはコードゴルフであるため、標準的な規則が適用されます。バイト単位の最短コードが優先されます。


完全なプログラムである必要がありますか、それとも機能は十分ですか?
Ypnypn

@Ypnypn完全なプログラム。
アークトゥルス

先行ゼロaは、出力の長さにカウントされ、出力にも含まれますか?
mbomb007

@ mbomb007はい、ただし初期番号のみ。製品の連結では、ゼロのチェーンは単一のゼロに短縮されます。
アークトゥルス

@ypnypn質問でそれを明示的に言ってください。タグwikiの「標準ルール」には、「次のデフォルト...回答は、完全なプログラムまたは機能(または同等のもの)のいずれかである可能性があります」と書かれています。
ジョシュアテイラー

回答:



1

Perl 6、116バイト

my ($a,$b)=@*ARGS;for 0..* {if $b>$a.chars {$_&&say "$a,$_";last};$a=map({[*] @_},($a~1 x$b-1).comb.rotor($b)).join}
my ($a,$b)=@*ARGS;
for 0..* {
  if $b>$a.chars {$_&&say "$a,$_";last}; # you need a 「;」 if you remove the newline
  $a=map(
    {[*] @_},
    ($a~1 x$b-1).comb.rotor($b)
  ).join
}

1

Pyth、32バイト

IglzQf<l=zjk*MsMMc+z*\1%_lzQQQ)z

デモンストレーション

2行の入力を受け取り、aその後にを続けbます。操作が結果に続く2行で出力します。

パッド: +z*\1%_lzQ

チョップ: c ... Q

intのリストに変換します。 sMM

製品を取る: *M

strに戻す: jk

割り当て直す: =z

終了の確認: <l ... Q

実行された反復を印刷します。 f ... )

印刷結果: z

何かを印刷するかどうかの最初のチェック: IglzQ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.