Square a Number my Way

Gryphon 21/08/2017. 20 answers, 1.959 views
code-golf number

Mọi người cứ nói với tôi rằng ô vuông của một số là số nhân của chính nó. Điều này rõ ràng là sai. Cách chính xác để tạo thành một số là để làm cho nó thành một hình vuông, bằng cách xếp chồng lên trên một số lần bằng số chữ số của nó, và sau đó đọc tất cả các số từ ô vuông kết quả, cả hai chiều ngang (từ từ trái sang phải) và theo chiều dọc (từ trên xuống dưới), và sau đó thêm chúng lại với nhau. Vì vậy, đối với số 123, trước tiên bạn tạo hình vuông:

123
123
123 

Sau đó, bạn lấy tất cả các hàng và cột từ hình vuông và thêm chúng lại với nhau:

123+123+123+111+222+333 

Điều này cho chúng ta kết quả là 1035 .

Đối với số âm, bạn thường xếp chồng (nhớ rằng bạn chỉ đếm số digits , vì vậy dấu âm không được bao gồm trong chiều dài), và sau đó đọc số ngang thường (có dấu âm), và sau đó bỏ qua dấu âm các số dọc. Vì vậy, đối với số -144 chúng tôi nhận được hình vuông:

-144
-144
-144 

Điều này cho chúng ta -144-144-144+111+444+444 , bằng 567

Đối với các số chỉ có một chữ số, hình vuông luôn bằng số được nhân đôi (đọc một lần theo chiều ngang và một lần theo chiều dọc). Vì vậy, 4 cho chúng ta

4 

Cho chúng ta 4+4 , bằng 8 .

Đối với các số có phần thập phân, ngăn xếp thông thường (hãy nhớ rằng chỉ các digits được tính bằng số lần bạn xếp số, và do đó không được đếm dấu thập phân) và bỏ qua ký hiệu thập phân khi đọc số dọc. Ví dụ, số 244.2 cho chúng ta

244.2
244.2
244.2
244.2 

Điều này cho chúng ta 244.2+244.2+244.2+244.2+2222+4444+4444+2222 , tương đương với 14308.8 .

Số thập phân hoặc số phức không thể được bình phương.

Nhiệm vụ của bạn:

Tôi mệt mỏi với số lượng bình phương theo cách của tôi bằng tay, vì vậy tôi đã quyết định tự động hóa quy trình. Viết cho tôi một chương trình hoặc chức năng mà có một phao hoặc chuỗi, bất cứ điều gì bạn thích, như đầu vào và trả về kết quả của squaring nó theo cách của tôi.

Ví dụ:

123    -> 1035
388    -> 3273
9999   -> 79992
0      -> 0
8      -> 16
-6     -> 0
-25    -> 27
-144   -> 567
123.45 -> 167282.25
244.2  -> 14308.8
2      -> 4
-0.45  -> 997.65
0.45   -> 1000.35 

Ghi điểm:

Bàn tay của tôi đang bị chật chội khi viết ra tất cả các ô vuông đó, và máy tính của tôi không hỗ trợ sao chép / dán, vì vậy mục nhập có số mã ít nhất để tôi nhập (được đo bằng byte vì lý do nào đó?) Thắng!

5 Comments
Gryphon 29/07/2017
Tôi nhận ra rằng điều này không có trong sandbox rất lâu (chỉ hơn một ngày), nhưng nó đã có 7 upvotes, vì vậy, tôi nghĩ rằng nó có thể đã sẵn sàng để đăng.
1 Leaky Nun 29/07/2017
"123.45" và "244.2" không phải là các phao hợp lệ trong chính nó vì máy tính lưu trữ số nhị phân. Đây không phải là vấn đề bình thường cho đến khi vấn đề phụ thuộc vào biểu diễn thập phân.
3 Leaky Nun 29/07/2017
@ Gryphon Đây là nơi nó không thành công. 244.2 không phải là số phao. Nó không thể được chuyển đổi thành chuỗi "244.2" .
2 Leaky Nun 29/07/2017
@ Gryphon Nhưng những hành vi như thế này khiến nó rất bất tiện.
7 Gryphon 29/07/2017
Tại sao ba phiếu đóng? Nếu 11 người có thể trả lời câu hỏi, tôi nghĩ nó có thể khá rõ ràng!

20 Answers


Erik the Outgolfer 29/07/2017.

05AB1E , 7 byte

þSDg×+O 

Hãy dùng thử trực tuyến!

Giải trình

þSDg×+O Implicit input
þ       Keep digits
 S      Get chars
  D     Duplicate
   g    Length
    ×   Repeat string(s)
     +  Add (implicit input added to all elements)
      O Sum 
4 comments
3 Jonathan Allan 29/07/2017
Ooo giải thích khi bạn có thể vui lòng
1 Jonathan Allan 29/07/2017
Ngoài ra, tôi sẽ lưu ý rằng số 0 đầu đơn là yêu cầu về đầu vào cho -1 <input <1 (tức là 0,45 và .45 là các đầu vào khác nhau nhưng cùng một số, chỉ có giá trị cũ là chấp nhận được)
Erik the Outgolfer 29/07/2017
@JonathanAllan Sau này không được xử lý.
Erik the Outgolfer 29/07/2017
@JonathanAllan Done.

Jonathan Allan 29/07/2017.

Thạch , 13 12 byte

fØDẋ€L$ŒV+VS 

Một liên kết monadic chấp nhận một danh sách các ký tự (một số thập phân được định dạng tốt, số 0 đứng đầu là một yêu cầu cho -1 < n < 1 ) và trả về một số.

Try it online!

14 byte để chấp nhận và trả lại số (đầu vào giới hạn tại +/-10-5 bởi ŒṘ ): ŒṘfØDẋ€L$ŒV+⁸S .

Làm sao?

fØDẋ€L$ŒV+VS - Link: list of characters         e.g. "-0.45"
 ØD          - yield digit characters                "0123456789"
f            - filter keep                           "045"
      $      - last two links as a monad:
     L       -   length (number of digit characters) 3
   ẋ€        -   repeat list for €ach digit          ["000","444","555"]
       ŒV    - evaluate as Python code (vectorises)  [0,444,555]
          V  - evaluate (the input) as Jelly code    -0.45
         +   - addition (vectorises)                 [-0.45,443.55,554.55]
           S - sum                                   997.65 
4 comments
Erik the Outgolfer 29/07/2017
Umm, bạn có thể thay thế +€ bằng + trong phiên bản 15 byte cho -1.
Jonathan Allan 29/07/2017
Đã làm, cảm ơn mặc dù!
Erik the Outgolfer 29/07/2017
Umm không có trong phiên bản 15 byte. EDIT: 3 giây quá sớm tôi cho rằng ...
Jonathan Allan 29/07/2017
Yup chỉ nhận thấy bạn đã nói phiên bản 15 byte - cảm ơn một lần nữa!

nimi 29/07/2017.

Haskell, 59 56 byte

f s|l<-filter(>'.')s=0.0+sum(read<$>(s<$l)++[c<$l|c<-l]) 

Đầu vào được lấy làm chuỗi.

Hãy dùng thử trực tuyến!

Làm thế nào nó hoạt động

l<-filter(>'.')s      -- let l be the string of all the numbers of the input string
f s   = 0.0 + sum     -- the result is the sum of (add 0.0 to fix the type to float)
   read<$>            -- turn every string of the following list into a number
   s<$l               -- length of l times the input string followed by
   [c<$l|c<-l]        -- length of l times c for each c in l 

ETHproductions 29/07/2017.

Japt v2 , 16 byte

o\d
l
¬xpV +V*Ng 

Kiểm tra nó trực tuyến!

Giải trình

o\d    First line: Set U to the result.
o      Keep only the chars in the input that are
 \d      digits. (literally /\d/g)

l    Second line: Set V to the result.
l    U.length

¬xpV +V*Ng    Last line: implicitly output the result.
¬             Split U into chars.
 x            Sum after
  pV            repeating each V times.
     +V*Ng    Add V * first input (the sum of the horizontals) to the result. 

Ian H. 31/07/2017.

C # (.NET Core), 150 141 133 byte

Saved 9 bytes thanks to @TheLethalCoder
Đã lưu 8 byte khác nhờ @TheLethalCoder

a=>{var c=(a+"").Replace(".","").Replace("-","");int i=0,l=c.Length;var r=a*l;for(;i 

Hãy dùng thử trực tuyến!

Lấy một chuỗi làm đầu vào và xuất ra số 'bình phương' làm phao.


Mã này tuân theo thuật toán sau:

  1. Tạo một chuỗi mới từ đầu vào, nhưng không có dấu thập phân và ký hiệu, vì vậy chúng ta có thể lấy chiều dài và số cho các cột từ đó.

  2. Tính toán thời gian đầu vào chiều dài của chuỗi mà chúng tôi đã tạo tại điểm 1.

  3. Đối với mỗi cột trong 'hình vuông' của chúng tôi, hãy tạo một chuỗi mới có số cột và chiều dài hàng và thêm nó vào kết quả của chúng tôi.

Thí dụ:

Đầu vào: -135.5

  1. Nếu chúng ta thay thế dấu thập phân và ký hiệu, chúng ta lấy chuỗi 1355 , có chiều dài là 4 .
  2. Thời gian nhập 4: -135.5 * 4 = -542 .
  3. Bây giờ chúng ta tạo các chuỗi mới cho mỗi cột, phân tích chúng và thêm chúng vào kết quả của chúng tôi:
    1111 , 3333 , 5555 , 5555 .

Nếu chúng tôi tổng hợp những con số này, chúng tôi nhận được 15012 , đó là chính xác những gì chương trình của chúng tôi sẽ sản xuất.

5 comments
1 Dada 31/07/2017
Chào mừng bạn trên trang web, và câu trả lời đầu tiên tốt đẹp (các giải thích đặc biệt được đánh giá cao!)!
Ian H. 31/07/2017
@Dada Cảm ơn bạn! Ngay cả khó khăn tôi khá khó chịu bởi các byte tôi đã đạt được từ các công cụ như string.Replace() , nhưng tôi đoán đó là cách duy nhất nó hoạt động!
TheLethalCoder 31/07/2017
Có thể tiết kiệm một số byte bằng cách đặt il thành phao.
Ian H. 31/07/2017
@ TheLethalCoder Nghĩ rằng điều đó tốt, đáng buồn chỉ mục không hoạt động với phao, và .Length không thể ngầm được chuyển đổi sang phao.
1 TheLethalCoder 31/07/2017
a=>{var c=a.Replace(".","").Replace("-","");int i=0,l=c.Length;var r=float.Parse(a)*l;for(;i 141 byte. Có thể có thể lưu bằng cách lấy đầu vào như là một float và đúc thành một chuỗi với n+"" nhưng tôi chưa kiểm tra.

Erik the Outgolfer 29/07/2017.

Brachylog , 23 byte

{∋ịṫ}ᶠ⟨≡zl⟩j₎ᵐ;[?]zcịᵐ+ 

Hãy dùng thử trực tuyến!

Brachylog không tốt với phao nổi ...

Giải trình:

{∋ịṫ}ᶠ⟨≡zl⟩j₎ᵐ;[?]zcịᵐ+ Takes string (quoted) input, with '-' for the negative sign
     ᶠ                  Return all outputs (digit filter)
{   }                    Predicate (is digit?)
 ∋                        An element of ? (input)
  ị                       Convert to number (fails if '-' or '.')
   ṫ                      Convert back to string (needed later on)
      ⟨   ⟩             Fork
       ≡                 Identity
         l               Length
                        with
        z                Zip
             ᵐ          Map
            ₎            Subscript (optional argument)
           j              Juxtapose (repeat) (this is where we need strings)
              ;         Pair with literal
               [ ]       List
                ?         ?
                  z     Zip
                   c    Concatenate (concatenate elements)
                     ᵐ  Map
                    ị    Convert to number
                      + Add (sum elements) 

Zgarb 29/07/2017.

Husk , 15 byte

§+ȯṁrfΛ±TṁrSR#± 

Lấy một chuỗi và trả về một số. Hãy dùng thử trực tuyến!

Giải trình

Có một chút khó chịu khi hàm phân tích cú pháp tích hợp r cung cấp cho các lỗi phân tích cú pháp trên các đầu vào không hợp lệ thay vì trả về một giá trị mặc định, có nghĩa là tôi phải lọc một cách rõ ràng các cột có chứa các chữ số không. Nếu nó trả về 0 trên đầu vào không đúng định dạng, tôi có thể giảm fΛ± và lưu 3 byte.

§+ȯṁrfΛ±TṁrSR#±  Implicit input, e.g. "-23"
             #±  Count of digits: 2
           SR    Repeat that many times: ["-23","-23"]
         ṁr      Read each row (parse as number) and take sum of results: -46
  ȯṁrfΛ±T        This part is also applied to the result of SR.
        T        Transpose: ["--","22","33"]
     fΛ±         Keep the rows that contain only digits: ["22","33"]
   ṁr            Parse each row as number and take sum: 55
§+               Add the two sums: 9 

Mr. Xcoder 29/07/2017.

Python 3 , 95 94 87 85 84 byte

 def f(i):l=[x for x in i if"/" 

Test Suite .

Python 3 , 78 byte

 lambda x:sum(float(i*len(z))for z in[[i for i in str(x)if"/" 

Test Suite.

Cách tiếp cận thứ hai là một cổng cho Python 3 lấy cảm hứng từ giải pháp @ officialaimm.


ThePirateBay 31/07/2017.

JavaScript, 75 62 byte

a=>(b=a.match(/\d/g)).map(b=>a+=+b.repeat(c),a*=c=b.length)&&a 

Dùng thử trực tuyến

-2 bytes thanks to Arnauld
-5 bytes thanks to Shaggy (tôi mặc dù chức năng phải nhận được một số, nhưng bây giờ tôi thấy rằng rất nhiều câu trả lời khác nhận được chuỗi quá)


Xcali 05/08/2017.

Perl 5 , 37 33 + 1 (-p) = 38 34 byte

 $_*=@n=/\d/g;for$\(@n){$_+=$\x@n} 

Hãy dùng thử trực tuyến!

Đã sử dụng một số thủ thuật từ mã của Dom để cạo 4 byte

Explained:

 @n=/\d/g;    # extract digits from input
$_*=@n;      # multiply input by number of digits
for$\(@n){   # for each digit:
  $_+=       # add to the input
  $\x@n}     # this digit, repeated as many times as there were digits
             # taking advantage of Perl's ability to switch between strings
             # and numbers at any point 
3 comments
Dom Hastings 31/07/2017
Đến với một cách tiếp cận rất giống nhau, nhưng quản lý để có được một vài byte off bằng cách sử dụng $ \ và thoát khỏi vòng lặp: thử nó trực tuyến!
Xcali 05/08/2017
Sử dụng một số cảm hứng từ bạn để cạo tôi xuống. Cấu trúc "} {" ở cuối của bạn là gì? Tôi không quen với cái đó.
Dom Hastings 05/08/2017
Đó là một trong những tôi đã học được từ trang web này, về cơ bản -n-p nghĩa đen quấn một while(){...} xung quanh mã như vậy }{ thoát ra khỏi đó. Điều này bỏ $_ nhưng nếu bạn sử dụng $\ làm biến của bạn, nó sẽ vẫn được in vì $\ được nối vào mọi bản in. Có nghĩa là bạn có thể lưu trữ số hoặc thứ gì đó trong đó và bỏ qua $_ . Không chắc chắn đó là một lời giải thích tuyệt vời, nhưng hãy kiểm tra Lời khuyên cho chơi golf g trong chủ đề Perl , tôi chắc chắn rằng nó sẽ giải thích nó tốt hơn! Vui mừng khi đã giúp điểm số của bạn mặc dù!

Erik the Outgolfer 29/07/2017.

Jelly , 17 byte

ŒṘfØDẋ€L©$ŒV;ẋ®$S 

Hãy dùng thử trực tuyến!


Erik the Outgolfer 29/07/2017.

Pyth, 18 byte

s+RvQsM*RF_lB@jkUT 

Hãy thử nó ở đây.


Mr. Xcoder 29/07/2017.

Pyth , 21 20 byte

K@jkUTQ+smv*lKdK*lKv 

Bộ kiểm tra.

Sử dụng một cách tiếp cận hoàn toàn khác với câu trả lời của @ EriktheOutgolfer , giúp tôi chơi 1 byte trong trò chuyện, từ 22 đến 21.


Giải trình

  K@jkUTQ+s.ev*lKbK*lKv   K @ jkUTQ - Lọc các chữ số và gán chúng cho một biến K.           m - Bản đồ.  Lặp lại qua các chữ số có biến d             v - Đánh giá (chuyển đổi sang phao).              * lKd - Nhân với mỗi chữ số String theo độ dài K.          s - Tổng         + - Tổng                   * lKvQ - Nhân số theo chiều dài của các chữ số Chuỗi 

officialaimm 30/07/2017.

Python 2 , 81 74 byte

-7 bytes thanks to @Mr. Xcoder -7 bytes thanks to @Mr. Xcoder : '/'

  • Lấy số nguyên hoặc float, trả về float.
 lambda x:sum(float(i*len(z))for z in[[i for i in`x`if"/" 

Hãy dùng thử trực tuyến!

Giải trình:

Nói 123.45 được cho là đầu vào. [i for i in`x`if"/" đưa ra một danh sách các số nguyên được [i for i in`x`if"/" ['1','2','3','4','5'] (cũng là z ). Bây giờ chúng ta lặp qua [x]+z ie [123.45,'1','2','3','4','5'] , nhân mỗi phần tử với len(z) , ở đây 5 và chuyển đổi từng thành một Float (để các chuỗi cũng chuyển đổi cho phù hợp), năng suất [617.25,11111.0,22222.0,33333.0,44444.0,55555.0] . Cuối cùng, chúng tôi tính sum(...) và thu được 167282.25 .

4 comments
Mr. Xcoder 29/07/2017
78 byte . Thay thế i.isdigit() bằng "/"
1 Mr. Xcoder 29/07/2017
74 byte . Bạn có thể thay thế i.isdigit() bằng "/" , trên thực tế, vì cả hai .- có mã ASCII thấp hơn chữ số, adn / nằm giữa chúng
officialaimm 29/07/2017
@ Mr.Xcoder Cảm ơn rất nhiều!
Mr. Xcoder 29/07/2017
Không có gì. Tôi đã chuyển nó sang Python 3 như một giải pháp thay thế cho câu trả lời của tôi

Bruce Forte 30/07/2017.

Octave , 100 82 byte

Cảm ơn rất nhiều @TomCarpenter đã dạy tôi rằng bài tập có giá trị trả về và tiết kiệm cho tôi 18 byte!

 @(v)(n=nnz(s=strrep(num2str(abs(v)),'.','')-'0'))*v+sum(sum(s'*logspace(0,n-1,n))) 

Hãy dùng thử trực tuyến!

Ung thư / Giải thích

 function f=g(v)
  s=strrep(num2str(abs(v)),'.','')-'0';  % number to vector of digits (ignore . and -)
  n=nnz(s);                              % length of that vector
  f=n*v+sum(sum(s'*logspace(0,n-1,n)))   % add the number n times and sum the columns of the square
end 

Cách làm việc này là chúng ta về cơ bản cần thêm số chính nó n lần và sau đó thêm tổng của các cột. s' * logspace(0,n-1,n) đạt được tổng các cột, ví dụ nếu v=-123.4 ma trận đó sẽ là:

 [ 1     10    100   1000;
  2     20    200   2000;
  3     30    300   3000;
  4     40    400   4000 ] 

Vì vậy, chúng tôi chỉ cần sum lại và chúng tôi đã hoàn thành.

1 comments
1 Tom Carpenter 30/07/2017
Bạn có thể lưu 18 byte bằng cách smushing tất cả vào một chức năng vô danh @(v)(n=nnz(s=strrep(num2str(abs(v)),'.','')-'0'))*v+sum(sum(‌​s'*logspace(0,n-1,n)‌​)) . Hãy dùng thử trực tuyến!

Mr. Xcoder 30/07/2017.

Swift 4 , 139 134 byte

 func f(s:String){let k=s.filter{"/"<$0};print(Float(s)!*Float(k.count)+k.map{Float(String(repeating:$0,count:k.count))!}.reduce(0,+))} 

Test Suite.


Giải trình

  • func f(s:String) - Định nghĩa hàm f với một tham số String rõ ràng s .

  • let k=s.filter{"/"<$0} - Lọc các chữ số: Tôi nhận thấy cả hai -. có các giá trị ASCII nhỏ hơn tất cả các chữ số và / nằm giữa . , -0 . Do đó, tôi chỉ kiểm tra nếu "/" nhỏ hơn ký tự hiện tại, như tôi đã làm trong câu trả lời Python của tôi.

  • print(...) - In kết quả.

  • Float(s)!*Float(k.count) - Chuyển đổi cả chuỗi và số chữ số thành Float và nhân chúng (Swift không cho phép Float và Int nhân :()). Vì vậy, nó thêm số x lần, trong đó x là số chữ số chứa.

  • k.mapNO maps over k with the current value $0 . - k.map{} ánh xạ trên k với giá trị hiện tại $0 . String(repeating:$0,count:k.count) lấy mỗi chữ số, tạo một Chuỗi gồm x chữ số giống hệt nhau và Float(...)! chuyển đổi nó thành một số dấu phẩy động.

  • .reduce(0,+) - Lấy tổng của danh sách ở trên.

  • Và cuối cùng + tổng kết hai kết quả.


Hãy lấy một ví dụ!

Nói chuỗi của chúng tôi là "0.45" . Trước hết, chúng tôi lọc các chữ số, vì vậy chúng tôi còn lại với 0, 4, 5 . Chúng tôi chuyển đổi "0.45" thành Float và nhân với số chữ số: 0.45 * 3 = 1.35 . Sau đó, chúng tôi lấy từng chữ số và biến nó thành một chuỗi lặp lại con số đó cho đến khi nó lấp đầy chiều rộng của hình vuông (có bao nhiêu chữ số): 0, 4, 5 -> 000, 444, 555 . Chúng tôi tính tổng số này, 000 + 444 + 555 = 999 . Sau đó, chúng tôi chỉ thêm kết quả với nhau: 1.35 + 999 = 1000.35 .


TheLethalCoder 31/07/2017.

C #, 139 137 byte

 using System.Linq;n=>{var d=(n+"").Where(char.IsDigit);return d.Sum(i=>int.Parse(new string(i,d.Count())))+new int[d.Count()].Sum(_=>n);} 

Saved 2 bytes thanks to @Ian H.

Hãy dùng thử trực tuyến!

Phiên bản đầy đủ / được định dạng:

 namespace System.Linq
{
    class P
    {
        static void Main()
        {
            Func f = n =>            {
                var d = (n + "").Where(char.IsDigit);
                return d.Sum(i => int.Parse(new string(i, d.Count()))) + new int[d.Count()].Sum(_ => n);
            };

            Console.WriteLine(f(123));
            Console.WriteLine(f(-144));
            Console.WriteLine(f(4));
            Console.WriteLine(f(244.2));

            Console.ReadLine();
        }
    }
} 
2 comments
Ian H. 31/07/2017
Bạn có thể lưu 2 byte ngay từ đầu bằng cách sử dụng var d=(n+ ... thay vì var d = (n ...
TheLethalCoder 31/07/2017
@IanH. Quên để loại bỏ tất cả các không gian -_- Đó là những gì tôi nhận được để trả lời trong khi thực hiện một cuộc gọi hỗ trợ.

Jenny_mathy 09/08/2017.

Mathematica, 107 byte

(t=Length[s=#&@@RealDigits[#]//.{a___, 0}:>{a}];If[IntegerPart@#==0,t++];t#+Tr[FromDigits@Table[#,t]&/@s])& 

Titus 11/08/2017.

PHP, 78 88 +1 byte

 for($e=preg_match_all("#\d#",$n=$argn);~$c=$n[$i++];)$s+=str_repeat($c,$e);echo$s+$n*$e; 

Chạy dưới dạng đường ống với -nR .

Có thể đưa ra cảnh báo trong PHP 7.1. Lặp lại $c,$e với $c>0?$c:0,$e để sửa.


C McAvoy 31/07/2017.

Python 3 , 68 70 73 77 byte

 lambda n:sum(float(n)+int(_*sum(x>"/"for x in n))for _ in n if"/"<_) 

Hãy dùng thử trực tuyến!

Vòng lặp trên mỗi ký tự chữ số và lặp lại nó bằng số ký tự chữ số tổng thể, làm cho nó thành một số nguyên và thêm vào n . Bằng cách này n được thêm d lần, phần ngang của tổng, cùng với sự lặp lại chữ số, là phần dọc. Ban đầu được sử dụng str.isdigit nhưng >"/" , nhờ những người khác trong chủ đề này, đã lưu rất nhiều byte. Tiết kiệm hai byte bằng cách lấy n như một chuỗi, nhưng đầu ra là messier.

 lambda n:sum(n+int(_*sum(x>"/"for x in str(n)))for _ in str(n)if"/"<_) 

Hãy dùng thử trực tuyến!

Related questions

Hot questions

Language

Popular Tags