Nhân lớp nền


11

Viết chương trình lấy hai số nguyên làm đầu vào; số thứ nhất có thể là bất kỳ số nguyên nào và số thứ hai nhỏ hơn hoặc bằng số chữ số trong số thứ nhất. Hãy để những con số này abtương ứng.

Chương trình sẽ làm như sau

  • Ghép một số 1s tối thiểu đến hết anên số chữ số trong achia hết cho b.
  • Chia atheo mọi bchữ số.
  • Nhân các chữ số trong mỗi phần với nhau.
  • Ghép các sản phẩm lại với nhau (nếu một trong các số bằng 0 thì ghép nối 0).
  • Lặp lại quy trình này cho đến khi một số có ít hơn bchữ số được hình thành. In này là đầu ra, cũng như số lượng của quá trình được lặp lại. Các đơn vị không cần thiết, nhưng một số hình thức phân tách giữa số lần lặp cuối và số lần lặp là.

Trong các trường hợp thử nghiệm sau đây, các bước riêng lẻ được hiển thị cho mục đích hiểu. Chương trình của bạn không cần thiết để hiển thị các bước.

Trường hợp kiểm tra 1

1883915502469, 3

Các bước

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

Đầu ra mẫu :0, 4

Trường hợp thử nghiệm 2

792624998126442, 4

Các bước

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

Đầu ra mẫu :06, 4


Chương trình phải trả về một lỗi (hoặc chỉ không in bất cứ điều gì) nếu b>len(a). Ngoài ra, bkhông thể bằng 1 hoặc chương trình sẽ dẫn đến một vòng lặp vô hạn.


Đây là mã golf, vì vậy các quy tắc tiêu chuẩn được áp dụng. Mã ngắn nhất trong byte thắng.


Nó cần phải là một chương trình hoàn chỉnh, hay là một chức năng đủ?
Ypnypn

@Ypnypn Một chương trình hoàn chỉnh.
Arcturus

Vì vậy, số 0 đứng đầu về chiều dài avà cũng được bao gồm trong đầu ra?
mbomb007

@ mbomb007 Có, nhưng chỉ trong số ban đầu. Chuỗi các số 0 sẽ được rút ngắn thành các số 0 đơn trong việc ghép các sản phẩm.
Arcturus

@ypnypn bạn nên nói rõ ràng trong câu hỏi. "Các quy tắc chuẩn" từ wiki thẻ cho biết "các mặc định sau ... Câu trả lời có thể là các chương trình hoặc chức năng đầy đủ (hoặc tương đương)."
Joshua Taylor

Câu trả lời:



1

Perl 6, 116 byte

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

Bình thường, 32 byte

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

Trình diễn

Đưa đầu vào trên hai dòng, atheo sau b. Cung cấp đầu ra trên hai dòng, hoạt động theo sau là kết quả.

Tập giấy: +z*\1%_lzQ

Chặt: c ... Q

Chuyển đổi sang danh sách ints: sMM

Lấy sản phẩm: *M

Chuyển đổi trở lại str: jk

Gán lại: =z

Kiểm tra chấm dứt: <l ... Q

Lặp lại in: f ... )

Kết quả in: z

Kiểm tra ban đầu xem có nên in bất cứ thứ gì không: IglzQ

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.