Root Power ที่น้อยที่สุด


22

การวนรอบกำลังไฟน้อยที่สุดของตัวเลขถูกกำหนดดังนี้:n

MPI(n)=nนาที(ตัวเลข(n))

นั่นคือยกบาทต่ำสุดในnยกตัวอย่างเช่นและ\nnMPI(32)=322=1024MPI(1234)=12341=1234

รากพลังงานน้อยที่สุดของจำนวนถูกกำหนดให้เป็นหมายเลขที่ได้รับจากการใช้ซ้ำ ๆจนกว่าจะมีการจุดคงที่จะพบ นี่คือตารางรากพลังงานที่น้อยที่สุดของตัวเลขระหว่าง 1 ถึง 25:nMPI

   n              MPR(n)
--------------------------
   1                   1
   2                   1
   3              531441
   4                   1
   5                3125
   6 4738381338321616896
   7                   1
   8            16777216
   9                   1
  10                   1
  11                  11
  12                  12
  13                  13
  14                  14
  15                  15
  16                  16
  17                  17
  18                  18
  19                  19
  20                   1
  21                  21
  22                   1
  23              279841
  24                   1
  25                   1

ถาม:สร้างตัวเลขที่มีรูทพาวเวอร์ขั้นต่ำไม่เท่ากับ 1 หรือตัวเอง

นี่คือตัวเลข 50 ตัวแรกในลำดับนี้:

3, 5, 6, 8, 23, 26, 27, 29, 35, 36, 39, 42, 47, 53, 59, 64, 72, 76, 78, 82, 83, 84, 92, 222, 223, 227, 228, 229, 233, 237, 239, 254, 263, 267, 268, 269, 273, 276, 277, 277, 279, 285, 286, 286, 339, 339, 342, 342

กฎระเบียบ

  • คุณอาจสร้างnตัวเลขแรกของลำดับนี้ (0- หรือ 1-indexed) สร้างnคำศัพท์ที่สร้างเครื่องกำเนิดไฟฟ้าซึ่งคำนวณเงื่อนไขเหล่านี้เอาท์พุทจำนวนมากอย่างไม่สิ้นสุด ฯลฯ
  • คุณอาจรับอินพุตและให้เอาต์พุตในฐานใดก็ได้ แต่การคำนวณสำหรับ MPR จะต้องอยู่ในฐาน 10 เช่นคุณอาจรับอินพุต###(เป็นหน่วยเดียว) และเอาต์พุต### ##### ######(เป็นหน่วยเดียว)
  • คุณต้องให้ผลตัวเลข คุณอาจไม่ได้ (เช่น) เอาท์พุท"3", "5", "6"เนื่องจากเป็นสตริง 3, 5, 6และ3 5 6ใช้ได้ทั้งคู่อย่างไรก็ตาม การแสดงผล2 3, "23"หรือจะถือว่าทุกการแสดงที่ไม่ถูกต้องของตัวเลขtwenty-three 23(อีกครั้งคุณอาจใช้ฐานใด ๆ เพื่อแสดงตัวเลขเหล่านี้)
  • นี่คือดังนั้นรหัสที่สั้นที่สุด (เป็นไบต์) ชนะ

2
แค่อยากรู้อยากเห็นคุณจะพิสูจน์ได้อย่างไรว่าในที่สุดก็พบจุดคงที่สำหรับ n ทั้งหมด?
nwellnhof

1
@nwellnhof (พิสูจน์อย่างหยาบ) สมมติว่าไม่มีจุดคงที่ของนั่นคือไม่มีอยู่ ให้เป็น -th ซ้ำของฟังก์ชั่นมากกว่าxลำดับนี้เพิ่มขึ้นอย่างเข้มงวดตั้งแต่สำหรับทั้งหมด เป็นอย่างเคร่งครัดเพิ่มขึ้นน่าจะเป็นของไม่มีหลักในเป็น 0 หรือ 1 ต่อ 0 มีแนวโน้มเป็นมีแนวโน้มไปสู่\MPR ( x ) x i i MPI x a b > a b c a , b , c 2 x i x ixMPR(x)xผมผมMPIxa>aa,,2xผมxผม
Conor O'Brien

ฮะ. oeis ไม่มีลำดับนี้
Draco18s

@ ConorO'Brien นั่นแสดงให้เห็นว่าสมมติฐานของคุณเป็นไปได้ แต่ก็ไม่ได้พิสูจน์
kasperd

1
@kasperd ดังนั้น "การพิสูจน์คร่าวๆ" มาก่อน
Conor O'Brien

คำตอบ:


5

05AB1E , 8 ไบต์

สร้างnth number 1 -exexed

µNÐΔWm}‹

ลองออนไลน์!

คำอธิบาย

µ          # run until counter equals input
 NÐ        # push 3 copies of the current iteration index (1-based)
   Δ  }    # run this code until the result no longer changes     
    Wm     # raise the number to the power of its minimum digit
       ‹   # check if greater than the index

เป็นทางเลือกรายการ infinite ที่มีจำนวนไบต์เดียวกัน:

∞ʒDΔWm}‹

ลองออนไลน์!


เดี๋ยวก่อนใช่มั้ย .. ดูเหมือนว่ามันจะง่ายกว่าที่ฉันคิดเอาไว้ .. >.> ฉันจะลบคำตอบของฉันเนื่องจากมันนานกว่าสองเท่า ..
Kevin Cruijssen

@KevinCruijssen: ฉันรู้สึกประหลาดใจเล็กน้อย คิดว่าจะใช้เวลา 12 ไบต์หรือมากกว่านั้นเมื่อดูที่งาน
Emigna

1
ฉันทวีคูณด้วยµและΔหลังจากความท้าทายถูกโพสต์และได้คำตอบเดียวกันนี้แน่นอน แต่ฉันสงสัยว่าทำไมมันไม่ทำงาน ... ฉันใช้Dมากกว่าÐเพราะฉันคิดว่าจะมีการใช้ฟังก์ชันจุดคงที่และสำเนาหนึ่งชุด อีกฟังก์ชันหนึ่งมีขนาดเล็กกว่า แต่ฉันไม่ได้คำนึงถึงว่าฉันต้องการสำเนาอื่นอีก ขอบคุณ Emigna ที่ช่วยไข Enimga ของฉัน
นาย Xcoder

6

Perl 6 , 49 ไบต์

{grep {($_,{$_**.comb.min}...*==*).tail>$_},1..*}

ลองออนไลน์!

ส่งคืนลำดับที่ไม่มีที่สิ้นสุด ฉันคิดว่ารุ่น 45 ไบต์ต่อไปนี้ทำงานได้เหมือนกัน แต่ฉันไม่สามารถพิสูจน์ได้ว่าจุดคงที่มักจะพบหลังจากการวนซ้ำ

{grep {($_,{$_**.comb.min}...*)[$_]>$_},3..*}

5

J , 41 39 37 ไบต์

(>:[echo^:(<(^0".@{/:~@":)^:_))^:_]1x

ลองออนไลน์!

อันนี้เป็นโปรแกรมเต็มรูปแบบการพิมพ์ลำดับอนันต์ โอกาสที่หายากมากที่โปรแกรมเต็มรูปแบบเต้นคำกริยาใน J

มันทำงานอย่างไร

(>:[echo^:(<mpi_fix))^:_]1x    Using the mpi_fix below; it finds the MPI fixpoint
          (<mpi_fix)           Is mpi_fix greater than the input?
    echo^:                     If so, apply echo; do nothing otherwise
                               echo returns an empty array
 >:[                           Discard the above and return input+1
(                   )^:_       Repeat the above infinitely (increment has no fixpoint)
                        ]1x    starting from arbitrary-precision number 1

J , 41 39 ไบต์

>:^:(>:(^0".@{/:~@":)^:_)^:_@>:@]^:[&0x

ลองออนไลน์!

คำกริยา monadic รับดัชนีแบบอิง 1 ส่งคืนตัวเลขที่ดัชนีนั้น ส่วนท้ายตรวจสอบว่า 20 คำแรกถูกต้อง

การอ่านคำว่า "fixpoint" ฉันทันทีที่คิดว่า "ใช่แล้ว^:_จะทำผลงานยอดเยี่ยม" จากนั้นฉันก็ลงเอยด้วยใบหน้าที่น่ารังเกียจและเศร้า และยังไม่ได้แม้กระทั่งรถไฟมันเป็นคำกริยาเดียว

Ungolfed & มันทำงานอย่างไร

nth_term =: >:^:(>:(^0".@{/:~@":)^:_)^:_@>:@]^:[&0x

mpi =: ^0".@{/:~@":    Find the MPI
             /:~@":    Sort the string representation
        0   {          Take first item
         ".@           Convert back to number
       ^               Raise the input to the power of above

mpi_fix =: mpi^:_      Find the MPI fixpoint

next_term =: >:^:(>:mpi_fix)^:_@>:    Given a number, find the next term
                               @>:    Increment once, and then...
                  >:mpi_fix           Is mpi_fix not greater than input?
             >:^:           ^:_       Increment while the above is true

nth_term =: next_term@]^:[&0x    Given one-based index, find the nth term
            next_term@]          Apply next_term monadically
                       ^:[       n times
                          &0x    to the starting value of zero

0xจำเป็นต้องใช้จำนวนเต็มความแม่นยำโดยพลการในการคำนวณฟิกซ์พอยต์อย่างแม่นยำเช่นหมายเลข 6


ที่ดี! นั่นเป็นจำนวนมากของ^:หัวของฉันเริ่มที่จะปวดเมื่อวันที่สองของพวกเขา :)
เลน Ivanov


33 ไบต์: _&(_&(]]+]>:(^{.@/:~&.":)^:_)>:)*รับอินพุตเป็นจำนวนเต็มเพิ่มเติม
ไมล์

4

Pyth , 10 ไบต์

.f>u^GshS`

ลองออนไลน์!

nGZZQ.fQu^GshS`GZ

รหัสรูทกำลังงานขั้นต่ำทำงานโดยการหาจุดที่คงที่uของการเพิ่มจำนวนปัจจุบันGเป็นกำลังของมันคือเลขดิจิตัลซึ่งเหมือนกับหลักแรก ( h) เรียงตามพจนานุกรม ( S) แล้วแปลงกลับเป็นจำนวนเต็ม ( s)


4

เยลลี่ 10 ไบต์

*DṂƊƬḊCȦµ#

ลิงก์ monadic ที่ใช้จำนวนเต็มI, จาก STDIN ซึ่งให้ผลลัพธ์Iรายการแรก

ลองออนไลน์!

( *DṂƊƬṪ%@µ#ใช้ได้กับ 10 ด้วย)

อย่างไร?

นับการเริ่มต้นn=0จนกว่าจะinputพบผลลัพธ์ที่แท้จริงของฟังก์ชัน monadic และให้ผลns

ฟังก์ชั่นนี้ใช้ฟังก์ชั่น monadic อื่น ๆ ซ้ำ ๆ เริ่มต้นด้วยx=nและรวบรวมค่าxจนกว่าผลลัพธ์จะไม่ซ้ำกันอีกต่อไป (เช่น: 19yields [19]; 23yields [23,529,279841]; 24yields [24, 576, 63403380965376, 1]; etc ... ) จากนั้นทำการ dequeues ผลลัพธ์ (ลบค่าที่อยู่ทางซ้ายสุด) เติมเต็มค่าทั้งหมด ( 1-x) และใช้Ȧเพื่อให้ได้ผลลัพธ์0เมื่อมีศูนย์ในรายการหรือว่างเปล่า

ฟังก์ชั่นสุดยกปัจจุบันxเพื่อทุกตัวเลขของxแล้วช่วยให้ขั้นต่ำ (การทำเช่นนี้เป็นไบต์ประหยัดกว่าการหาหลักขั้นต่ำครั้งแรก)

*DṂƊƬḊCȦµ# - Link (call the input number I)
         # - count up from 0 and yield the first I for which this yields a truthy value:
        µ  -   a monadic chain:
    Ƭ      -     collect until results are not unique:
   Ɗ       -       last three links as a monad:
 D         -         convert to a list of decimal digits
*          -         exponentiate
  Ṃ        -         minimum
     Ḋ     -     dequeue
      C    -     compliment
       Ȧ   -     any-and-all?

การใช้งานที่ชาญฉลาดของที่ ƬḊCȦนั่น :-)
Erik the Outgolfer

Ṫ>หยิบขึ้นมา0:(
Jonathan Allan

4

Mathematica, 59 51 ไบต์

-8 ไบต์ขอบคุณที่Misha Lavrov

Select[Range@#,#<(#//.x_:>x^Min@IntegerDigits@x)&]&

ฟังก์ชั่นบริสุทธิ์ รับตัวเลขเป็นอินพุตและส่งคืนรายการคำถึงหมายเลขนั้นเป็นเอาต์พุต ไม่มีอะไรซับซ้อนมากที่นี่


FixedPointมักจะไม่ดีเท่า//.(สั้นReplaceRepeated) ในโค้ดกอล์ฟ Select[Range@#,1<(#//.x_:>x^Min@IntegerDigits@x)!=#&]&ที่นี่เราอาจบันทึกไม่กี่ไบต์ด้วย
Misha Lavrov

นอกจากนี้ถ้า MPI (x) เป็นค่า 1 มิได้ x แล้วก็มักจะมีขนาดใหญ่กว่า x Select[Range@#,#<(#//.x_:>x^Min@IntegerDigits@x)&]&ดังนั้นวิธีการแก้ปัญหาคือแม้สั้น
Misha Lavrov

3

Python 3 , 90 88 ไบต์

-2 ไบต์โดย @mypetlion

def F(x):m=x**int(min(str(x)));return[int,F][m>x](m)
x=1
while 1:x<F(x)and print(x);x+=1

ลองออนไลน์!

printในฐานะที่เป็นนิพจน์บันทึกสองไบต์มากกว่าการใช้ifคำสั่งใน Python 2 Fคำนวณ MPI fixpoint; ส่วนที่เหลือให้ลำดับอนันต์กับ STDOUT


เปลี่ยนreturn m>x and F(m)or mเป็นreturn[int,F][m>x](m)บันทึก 2 ไบต์
mypetlion




2

Java 10, 178 173 ไบต์

v->{for(int x=1,m;;){var b=new java.math.BigInteger(++x+"");for(m=9;m>1;)b=b.pow(m=(b+"").chars().min().orElse(0)-48);if(b.compareTo(b.valueOf(x))>0)System.out.println(x);}}

คำตอบ Rubyของพอร์ต@GBดังนั้นจึงพิมพ์ได้เรื่อย ๆ

ลองออนไลน์

คำอธิบาย:

v->{             // Method with empty unused parameter and no return-type
  for(int x=1,   //  Start an integer `x` at 1
      m;         //  Temp integer for the smallest digit, starting uninitialized
      ;){        //  Loop indefinitely
    var b=new java.math.BigInteger(++x 
                 //   Increase `x` by 1 first
          +"");  //   And create a BigInteger `b` for the new `x`
    for(m=9;     //   Reset `m` to 9
        m>1;)    //   Loop as long as the smallest digit is not 0 nor 1
      b=b.pow(m=(b+"").chars().min().orElse(0)-48
                 //    Set `m` to the smallest digit in `b`
              ); //    Set `b` to `b` to the power of digit `m`
    if(b.compareTo(b.valueOf(x))>0)
                 //   If `b` is larger than `x`:
      System.out.println(x);}}
                 //    Print `x` with a trailing newline


1

JavaScript (Node.js) , 98 90 89 86 ไบต์

-3 ไบต์ขอบคุณ @Conor O'Brien

function*(){for(n=0n;;x>n&&(yield n))for(x=++n;(b=Math.min(...""+x))-1;)x**=BigInt(b)}

ลองออนไลน์!

MPR(n)>nMPR(n){1,n}

ดูเหมือนว่าเครื่องกำเนิดไฟฟ้าจะสั้นกว่าการส่งกลับอาร์เรย์ของnตัวเลขหรือไม่

หรือการพิมพ์แบบไม่ จำกัด - 72 ไบต์

for(n=0n;;x>n&&alert(n))for(x=++n;(b=Math.min(...""+x))-1;)x**=BigInt(b)

ลองออนไลน์!


86 ไบต์โดยเลื่อนการควบคุมไปรอบ ๆ เพื่อกำจัดเครื่องหมายวงเล็บ (ส่วนใหญ่: if(x>n)yield nจะx>n&&(yield n)เป็นการแสดงออก)
Conor โอไบรอัน


0

JavaScript (Chrome), 78 77 ไบต์

F=x=>(m=x**BigInt(Math.min(...''+x)))>x?F(m):m
for(x=0n;++x;)x<F(x)&&alert(x)

ลองออนไลน์!

พอร์ตของการแก้ปัญหาของตัวเองหลาม 3 Chrome เวอร์ชันล่าสุดรองรับBigInt(ทดสอบบนพีซีของฉัน) อย่าลองใช้รหัสนี้ในเบราว์เซอร์ของคุณ


ฮ่า ๆ กำลังจะตีกอล์ฟคำตอบของฉัน แต่คุณได้นำ 77 ไบต์ และ 77 ไบต์สนามกอล์ฟที่วางแผนไว้ของฉัน
Shieru Asakoto

0

แร็กเก็ต , 270, 257 233 ไบต์

(define(f n)(local((define(m x)(expt x(-(first(sort(map char->integer(string->list(~v x)))<))48)))(define(g y)(if(= y(m y))y(g(m y))))(define(k x l)(if(=(length l)n)l(if(< x(g x))(k(+ x 1)(cons x l))(k(+ x 1)l)))))(reverse(k 1'()))))

ลองออนไลน์!

นี่คือการส่งแร็กเก็ตครั้งแรกของฉันดังนั้นจึงสามารถตีกอล์ฟได้มากขึ้นอย่างแน่นอน อย่างไรก็ตามฉันค่อนข้างพอใจกับการจัดการเพื่อแก้ปัญหา

อ่านเพิ่มเติมได้:

(define (f n)
  (local ((define (m x)
           (expt x
                 (- (first (sort (map char->integer (string->list (~v x)))
                                 <))
                    48)))
         (define (g y)
           (if
             (= y (m y))
             y
             (g (m y))))
         (define (k x l)
           (if (= (length l) n)
               l
               (if (< x (g x))
                   (k (+ x 1) (cons x l))
                   (k (+ x 1) l))))
    (reverse (k 1 '()))))

0

ความจริง 168 ไบต์

u(x)==(y:=x::String;x^reduce(min,[ord(y.i)-48 for i in 1..#y])::NNI)
q(a:PI):PI==(b:=a;repeat(c:=u(b);c=b=>break;b:=c);b)
z(x)==[i for i in 1..x|(m:=q(i))~=1 and m~=i]

ฟังก์ชั่นที่จะใช้คือ z (); ที่นี่มันพิมพ์ตัวเลขที่มีความสัมพันธ์กันหนึ่งหมายเลขไม่ใช่ 1 ไม่ใช่ตัวมันเองและน้อยกว่าอาร์กิวเมนต์

(6) -> z 1000
 (6)
 [3, 5, 6, 8, 23, 26, 27, 29, 35, 36, 39, 42, 47, 53, 59, 64, 72, 76, 78, 82,
  83, 84, 92, 222, 223, 227, 228, 229, 233, 237, 239, 254, 263, 267, 268,
  269, 273, 276, 277, 278, 279, 285, 286, 287, 289, 296, 335, 338, 339, 342,
  346, 347, 348, 354, 358, 363, 365, 372, 373, 374, 376, 382, 383, 386, 392,
  394, 395, 399, 423, 424, 426, 427, 428, 432, 433, 435, 436, 442, 447, 459,
  462, 464, 466, 467, 468, 469, 476, 477, 479, 483, 487, 488, 489, 493, 494,
  523, 524, 527, 529, 533, 537, 542, 546, 553, 556, 557, 562, 563, 572, 573,
  577, 582, 583, 584, 594, 595, 598, 623, 626, 627, 629, 632, 633, 642, 646,
  647, 648, 663, 664, 669, 672, 676, 682, 683, 684, 693, 694, 695, 698, 722,
  724, 729, 736, 759, 763, 773, 775, 782, 786, 823, 829, 835, 846, 847, 856,
  873, 876, 885, 893, 894, 896, 923, 924, 928, 933, 953, 954, 962, 969, 973,
  974, 984, 993, 994, 995]
                                               Type: List PositiveInteger

0

Visual Basic .NET (.NET Core) , 290 ไบต์ (รวมถึงการนำเข้า)

Iterator Function A()As System.Collections.IEnumerable
Dim i=B.One,q=i,p=i
While 1=1
q=i-1
p=i
While q<>p
For j=0To 9
If p.ToString.Contains(j)Then
q=p
p=B.Pow(p,j)
Exit For
End If
Next
End While
If p>1And p<>i Then Yield i
i+=1
End While
End Function

ลองออนไลน์!

ต้องมีการนำเข้าต่อไปนี้:

Imports B = System.Numerics.BigInteger

สิ่งนี้ใช้ฟังก์ชันตัววนซ้ำเพื่อส่งคืนรายการจำนวนเต็มที่ไม่สิ้นสุด (จำนวนที่โหลดต่อเนื่อง) ที่ตรงกับเกณฑ์ ใช้BigIntegerเพื่อหลีกเลี่ยงข้อ จำกัด ด้านขนาดโดยเฉพาะอย่างยิ่งกับการคำนวณระดับกลาง

ยกเลิกแข็งแรงเล่นกอล์ฟ:

Iterator Function A() As System.Collections.IEnumerable
    Dim i As B = 1
    While True
        Dim prevProduct As B = 0
        Dim product As B = i
        While prevProduct <> product
            For j = 0 To 9
                If product.ToString.Contains(j) Then
                    prevProduct = product
                    product = B.Pow(product, j)
                    Exit For
                End If
            Next
        End While
        If product <> 1 And product <> i Then
            Yield i
        End If
        i += 1
    End While
End Function


0

APL (NARS), 96 ตัวอักษร, 192 ไบต์

r←f w;k;i;a
   r←⍬⋄k←1
A: i←k
B: →C×⍳i=a←i*⌊/⍎¨⍕i⋄i←a⋄→B
C: →D×⍳(a=k)∨a=1⋄r←r,k
D: k+←1⋄→A×⍳k≤w

ทดสอบ (ผลบางส่วนสำหรับข้อโต้แย้งที่ 22 ดูเหมือนว่าจะใหญ่มากดังนั้น <ข้อโต้แย้งที่ 21 ฉันไม่ทราบว่าสามารถใช้ได้)

  f 21
3 5 6 8 

0

Python 3 , 102 ไบต์

x=int(input())
a=c=0
while x:
 a+=1;b=a
 while b-c:b,c=b**int(min(str(b))),b
 x-=b!=1and b!=a
print(a)

ลองออนไลน์!

ตัดสินใจลองใช้โซลูชัน Python 3 ที่พิมพ์คำที่ n ในลำดับโดยตรง


ดูเหมือนว่าคุณไม่ได้ใช้คุณสมบัติ Python 3 ใด ๆ การเล่นกอล์ฟอย่างรวดเร็วใน Python 2ให้ 87 ไบต์
Bubbler


0

C (เสียงดังกราว) + -DL=long long -lm, 213 ไบต์

q(char*a,char*b){return*a>*b;}L f(L a){char*c;asprintf(&c,"%lld",a);qsort(c,strlen(c),1,q);L b=pow(a,*c-48);return b>a?f(b):b;}i;g(j){for(i=0;j;i++){L x=f(i);x!=i&x!=1&x>0&&printf("%d\n",i)&&j--;}}

ลองออนไลน์!

ฟังก์ชั่นg(j)พิมพ์jคำแรกของลำดับ


กลับมาพร้อมกับa=...บันทึกเป็นโหลหรือมากกว่านั้น

และแทนx>1 x!=1&x>0

คนแรกต้องเปลี่ยนเป็น GCC

0

Husk , 16 12 10 ไบต์

fS>ωṠ^o▼dN

บันทึก 6 ไบต์ขอบคุณ H.PWiz
ลองออนไลน์!

คำอธิบาย

fS>ωṠ^o▼dN
f        N       Filter the natural numbers where...
   ω             ... the fixed point...
    Ṡ^o▼d        ... of raising the number to its smallest digit...
 S>              ... is greater than the number.

คุณสามารถเปลี่ยนที่นี่ด้วย S>วิธีนี้ช่วยให้คุณสามารถใส่ได้ทั้งหมดในบรรทัดเดียว ดูเหมือนว่าคุณได้ทิ้งลิงค์ผิดพลาดไว้ในลิงค์ tio ก่อนหน้านี้
H.PWiz

0

Japtap , 44 ไบต์


_ì ñ g
_gV ¥1?Z:ZpZgV)gW
@@[1X]øXgW}fXÄ}gUÄ

ลองออนไลน์!

แตกต่างอย่างมากจากคำตอบ Japt อื่น ๆ

คำอธิบาย:

                        Empty line preserves the input

_ì ñ g                Function V finds the smallest digit in a number Z
 ì                          Get the digits of Z
   ñ                        Sort the digits
     g                      Get the first (smallest) digit


_gV ¥1?Z:ZpZgV)gW     Function W finds the MPR of a number Z
 gV ¥1?Z                    If V(Z) is 1, then it's stable; return it
        :ZpZgV)             Otherwise get MPI of Z...
               gW           And call W on it ( MPR(Z) == MPR(MPI(Z)) )

@@[1X]øXgW}fXÄ}gUÄ    Main program
@             }gUÄ      Get the nth number by repeatedly applying...    
 @        }fXÄ              Find the next smallest number X which returns false to...
       XgW                    MPR(X)
      ø                       is either...
  [1X]                        1 or X

ในแง่ของความเป็นไปได้ในการเล่นกอล์ฟในอนาคตฉันได้โทรหาฟังก์ชั่นด้วยตัวเองมากมายซึ่งฉันคิดว่าน่าจะลดลงได้ แต่ฉันไม่แน่ใจว่าจะทำอย่างไร

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.