The Squaring Sequence


29

ระยะในลำดับ squaring แต่ละx nถูกสร้างขึ้นโดยการx n-1 , squaring มันและลบทั้งหมด แต่ตัวเลขสี่ครั้งแรก

ลำดับเสมอเริ่มต้นด้วยx 1 = 1111 การยกกำลังสองนี้จะได้ 1234321 ดังนั้นx 2 = 1234

คำศัพท์สองสามคำแรกคือ:

1111
1234
1522
2316
5363
...

ความท้าทาย

งานของคุณคือการได้รับจำนวนเต็มไม่เป็นลบnคำนวณx n คุณสามารถส่งโปรแกรมเต็มรูปแบบซึ่งดำเนินการ I / O หรือฟังก์ชั่นที่ใช้nเป็นพารามิเตอร์

โซลูชันของคุณอาจมีค่าศูนย์หรือดัชนีหนึ่งรายการตราบใดที่คุณระบุว่า

เนื่องจากข้อกำหนดทั้งหมดในลำดับนี้สั้นกว่า 5 หลักรหัสของคุณควรสั้นที่สุดเท่าที่จะเป็นไปได้ ช่องโหว่ของมาตรฐาน

ขอให้นักกอล์ฟที่ดีที่สุดชนะ!


กรณีทดสอบ

หมายเหตุ: สิ่งเหล่านี้เป็น 1 ดัชนี

1   -> 1111
8   -> 6840
15  -> 7584
20  -> 1425
80  -> 4717

คำตอบ:


11

05AB1E , 8 7 ไบต์

รหัส:

$Fn4×4£

คำอธิบาย:

$        # Push 1 and the input
 F       # Input times do...
  n      #   Square the number
   4×    #   Repeat that string 4 times
     4£  #   Take the first four characters
         # Output the last computed number

ใช้การเข้ารหัสCP-1252 ลองออนไลน์!


3
เอาชนะฉันภายใน 20 วินาที :(
Magic Octopus Urn

24

JavaScript (ES7), 44 43 36 ไบต์

f=n=>--n?(f(n)**2+f).slice(0,4):1111

นี่เป็นตัวอย่างที่ดีของการใช้การข่มขู่แบบเหยียดหยาม: **แปลงทั้งอาร์กิวเมนต์เป็นตัวเลขและ+แปลงทั้งอาร์กิวเมนต์เป็นสตริงยกเว้นว่าเป็นตัวเลขทั้งคู่ ซึ่งหมายความว่าการf(n)**2+fแปลงครั้งแรกf(n)fเป็นจำนวนและสี่เหลี่ยมมันแล้วเชื่อมผลกับการเป็นตัวแทนสตริงของ จากนั้นเราสามารถใช้.sliceเพื่อดึง 4 ตัวอักษรแรกของสตริง

ต่อไปนี้เป็นแนวทางสำรองบางส่วนที่ไม่ใช้สตริง:

f=(n,x=1111)=>x<1e4?--n?f(n,x*x):x:f(n,x/10|0)
f=n=>--n?(x=f(n))*x/(x>3162?1e4:1e3)|0:1111

ตัวอย่างการทดสอบ

หมายเหตุ: สิ่งนี้ใช้Math.powเพราะ**ไม่ได้รับการสนับสนุนในเบราว์เซอร์ทั้งหมด


6

Haskell, 40 ไบต์

((iterate(read.take 4.show.(^2))1111)!!)

มันเป็นลำดับที่ 0 ตัวอย่างการใช้งาน: ->((iterate(read.take 4.show.(^2))1111)!!) 794717

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

iterate (   ) 1111               -- repeatedly apply a function starting
                                 -- with 1111 and collect the results in a list
                                 -- the function is
           (^2)                  -- square
        show                     -- turn into string
     take 4                      -- take the first 4 chars
  read                           -- turn back to number
                     !!          -- finally pick the nth element from the list         

6

Mathematica, 48 ไบต์

Nest[⌊10^(3-⌊t=2Log[10,#]⌋+t)⌋&,1111,#]&

ฟังก์ชั่นที่ไม่มีชื่อการโต้แย้งอาร์กิวเมนต์จำนวนเต็ม; 0 การจัดทำดัชนี ใช้อักขระสามไบต์สี่ตัว⌊⌊⌋⌋ : Mathematica ใช้อย่างใดอย่างหนึ่งFloor[x]หรือ⌊x⌋เพื่อปัดเศษจำนวนจริงลงไปเป็นจำนวนเต็มและส่วนหลังคือไบต์ที่น้อยกว่า ชื่อคำสั่งใน Mathematica สำหรับการแปลงจำนวนเต็มเป็นสตริงยาวเกินไปดังนั้นเราจึงทำการคำนวณทางคณิตศาสตร์เพื่อหาตัวเลขสี่หลักแรกของ x ^ 2: เราใช้ลอการิทึมฐาน 10 ของ x ^ 2 ลบส่วนจำนวนเต็มเพิ่ม 10 กลับสู่พลังนั้นและคูณด้วย 1,000 และปัดเศษลง

tl; dr: ลอการิทึม ftw


6

Python 2, 51 46 44 Bytes

ฉันต้องการกำจัด clunky ifถ้าเป็นไปได้ แต่ฉันคิดว่าexecอาจสั้นกว่านี้ได้ ..เปิดออกตอนที่execสั้นกว่านี้ ผิดอีกครั้ง! ฟังก์ชันเรียกซ้ำจะส่งคืน นี่คือหนึ่งดัชนี

f=lambda n:1111*(n<2)or int(`f(n-1)**2`[:4])

โซลูชัน 46 ไบต์ทางเลือกพร้อมด้วยexec:

s=1111;exec's=int(`s*s`[:4]);'*input();print s

โซลูชันแบบเรียกซ้ำ 49 ไบต์ทางเลือก:

f=lambda n,s=1111:s*0**n or f(n-1,int(`s*2`[:4]))

ขอบคุณ Flp.Tkc สำหรับการบันทึกไบต์โดยเตือนฉันว่าการยกกำลังสองไม่จำเป็นต้องมีการยกกำลัง :)


โซลูชัน 46 ไบต์อื่น:f=lambda n:1111if n<2else int(`f(n-1)**2`[:4])
acrolith

@daHugLenny ที่สามารถเป็น 45: repl.it/EejD
FlipTack

1
@ Flp.Tkc และนั่นอาจเป็น 44;)
Kade

5

V , 19 ไบต์

4é1Àñ|C="*"
5|D

ลองออนไลน์!

สิ่งนี้ใช้การจัดทำดัชนีแบบ 0

แน่นอนเนื่องจากตัวเลขไม่ได้อยู่ตรงหน้ามือขวาของ V เลยนี่มันช่างไม่ค่อยเก่งนัก อย่างไรก็ตามมันแสดงให้เห็นถึงข้อดีข้อหนึ่งที่ V ได้รับมากกว่า คุณสามารถเรียกใช้แมโคร0ครั้งซึ่งเป็นไปไม่ได้ในกลุ่มเนื่องจาก '0' เป็นคำสั่งที่ไม่นับ

มีอักขระที่ไม่สามารถพิมพ์ได้มากมายดังนั้นนี่คือ hexdump:

0000000: 34e9 31c0 f17c 4312 3d12 222a 1222 0a1b  4.1..|C.=."*."..
0000010: 357c 44                                  5|D

และนี่คือเวอร์ชันที่อ่านได้:

4é1Àñ|C<C-r>=<C-r>"*<C-r>"
<esc>5|D

คำอธิบาย:

4                           " 4 times:
 é1                         " Insert a '1'
   Àñ                       " Arg1 times:
     |                      "   Move to the first character on this line
      C                     "   Delete this whole line and enter insert mode
       <C-r>=               "   Insert the following evaluated as vimscript:
             <C-r>"         "     Insert what we just deleted
                   *        "     Times
                    <C-r>"  "     What we just deleted
<esc>                       "   Escape to normal mode
     5|                     "   Move to the fifth column on this line
       D                    "   And delete until the end of this line
                            " The second 'ñ' is added implicitly

5

เจลลี่ , 12 9 ไบต์

-3 ไบต์ขอบคุณเดนนิสที่ใช้การจัดทำดัชนีแบบ 1 รายการและอะตอม / การก่อตัวของอะตอมใหม่ ยินดีต้อนรับคำแนะนำการเล่นกอล์ฟ! ลองออนไลน์!

²Dṁ4Ḍ
1Ç¡

Ungolfing

Helper link
²       Square.
 D      Integer to decimal (a list of digits).
  ṁ4    Mold/reshape list_of_digits to be 4 digits long.
    Ḍ   Decimal to integer.

Main link: implicit left argument n
1     Start with the nilad 1.
 Ç¡   Call the helper link n times.

สิ่งนี้จะช่วยประหยัด 3 ไบต์ด้วยการจัดทำดัชนีแบบ 1
Dennis

เอ่อฉันไม่คิดว่าคุณจะใช้1แทน⁽¡nได้
Erik the Outgolfer

@EriktheOutgolfer เป็นยังไงบ้าง?
Sherlock9

@ Sherlock9 โอ้คุณดูเหมือนจะจัดทำดัชนีตามลำดับนี้ไหม อืมดูเหมือนว่ารหัสเป็นเรื่องยุ่งยากเล็กน้อยที่จะเข้าใจ ...
Erik the Outgolfer

4

Perl, 37 ไบต์

รหัส 36 ไบต์ + -pธง

$\=1x4;$\=substr$\*$\,0,4while--$_}{

วิธีเรียกใช้:

perl -pe '$\=1x4;$\=substr$\*$\,0,4while--$_}{' <<< 80

4

Powershell, 73 55 ไบต์

ขอบคุณมากสำหรับ TimmyD สำหรับการกำจัดขนาด 18 ไบต์!

รหัส:

for($A=1111;$args[0]---1;$A=-join"$(+$A*$A)"[0..3]){}$A

$A=1111;1..($n=2)|%{[string]$B=[math]::pow($A,2);$A=$B.substring(0,4)};$A

$nคือnในx n-1

คำอธิบายและรหัสระเบิด:

$A=1111                            #starting number
$n=4                               #n in formula
for($i=0; $i -lt $n;$i++)          #loop n times
{
    [string]$B=[math]::pow($A,2)   #create a new string $B and set it to $A raised to the power of 2
    $A=$B.substring(0,4)           #set $A to the first 4 characters of $B
}
$A                             #print $A

หมายเหตุบางส่วน:

  • Powershell ช่วยให้คุณสามารถกำหนดตัวแปรในข้อความเดียวกันกับที่คุณอ้างอิงได้ ตัวอย่างเช่น1..($n=4)|%จะตั้งค่า $ n เป็น 4 จากนั้นเริ่มวนซ้ำที่เรียกใช้ $ n ครั้ง 1สามารถเปลี่ยนเป็นจำนวนเต็มใด ๆ และมันจะวน $ n- [จำนวนเต็มของคุณ] +1 ครั้ง
  • ประเภทข้อมูลเริ่มต้นเมื่อใช้[math]::ใน Powershell เป็นสองเท่า ในโค้ดข้างต้นเราต้องส่ง$Bไปยังสตริงอย่างชัดเจนเพื่อให้เราสามารถเรียก.substring()ใช้มันได้เนื่องจากไม่มี.substring()ฟังก์ชันสำหรับคู่ใน Powershell

4

Python 2,  44  41 ไบต์

-3 ไบต์ขอบคุณ xnor (ใช้การหารจำนวนเต็มเพื่อหลีกเลี่ยงand)

f=lambda n:int(1/n*1111or`f(n-1)**2`[:4])

repl.it

ฟังก์ชั่นแบบเรียกซ้ำ 1

เมื่อn>1การหารจำนวนเต็ม1/n, ส่งผล0ให้, 0*1111=0ซึ่งเป็นเท็จ, ดังนั้นทางด้านขวาของorจะถูกประเมิน, ซึ่งใช้อักขระสี่ตัวแรกของการแทนค่ากำลังสองของn-1ผลลัพธ์ที่สอง; intนี้ถูกโยนจากนั้นไปยัง

เมื่อn=1แบ่งจำนวนเต็มให้1/nผลในการ1แล้ว1*1111=1111ซึ่งเป็น truthy และint 1111โยนไปยังเป็นint1111


ดีมาก ninja'd ฉันทีละไบต์!
FlipTack

ฉันแค่มองหาคำตอบของคุณแล้วคุณก็รู้ว่าคุณได้เขียนความท้าทาย! งานที่ดี.
Jonathan Allan

1
ความคิดที่ดีกับการintออกไปข้างนอก หากคุณมีดัชนี 1 ตัวคุณสามารถทำเคสพื้นฐานให้สั้นลงg=lambda n:int(1/n*1111or`g(n-1)**2`[:4])ได้
xnor

1
"ข้ามออกไป 44 ยังดูเหมือน 44 :("
FlipTack

1
@ Flp.Tkc ไม่มากเท่าที่ไม่มี&nbsp;s!
Jonathan Allan



3

MATL , 14 , 13 ไบต์

1111G:"UV4:)U

ลองออนไลน์!

คำอธิบาย:

1111            % Push 1111
    G           % Push input
     :"         % Input times:
       U        %   Square the top of the stack
        V       %   Convert it to a string
         4:)    %   Take the first four digits
            U   %   Convert it back to a number
                % Implictly display

2
คุณสามารถใช้U(สี่เหลี่ยมจัตุรัสสำหรับการป้อนตัวเลข) ติดตั้งt*
Luis Mendo

1
@LuisMendo ขอบคุณที่เตือนฟังก์ชั่นที่ฉันแนะนำ! : P
DJMcMayhem

3

R, 58 56 55 53 53 ไบต์

x=3334;for(e in N<-scan():1)x=x^2%/%10^(3+(x>3162));x

นำNมาจาก stdin 3334 นั้นใช้งานได้จริง X_0 ซึ่งเป็นสิ่งจำเป็นเนื่องจาก for-loop จะต้องดำเนินการอย่างน้อยหนึ่งครั้ง (มันจะข้ามได้นานกว่า)

R เป็นภาษาที่แย่มากสำหรับการรับตัวเลขสี่หลักแรกของตัวเลข แต่เนื่องจากจำนวนคดีมี จำกัด เราจึงต้องกังวลเกี่ยวกับกำลังสองx<3163และx>3162เมื่อก่อนให้ผลเป็นตัวเลข 6 หลักหลังตัวเลข 7 หลัก .

ที่เหลือค่อนข้างตรงไปตรงมา %/%แบ่งและละเว้นส่วนที่เหลือxถูกพิมพ์ไปยัง stdout

บันทึก 2 ไบต์ด้วย @ETHproductions


นี่เป็นเรื่องไม่สำคัญ ยอดเยี่ยม!
Andreï Kostyrka

1
ทำได้ดีนี่! จะเกิดอะไรขึ้นถ้าคุณเริ่มต้นด้วย3334(หรือบางที3333)
ETHproductions

@ETHproductions 3333^2 = 11108889ดังนั้นจะให้ผลตอบแทน1110และ .... ในขณะที่ฉันกำลังตรวจสอบสิ่งนี้ฉันเห็นว่าใช้3334งานได้: | . ไม่แน่ใจว่าทำไมฉันไม่ตรวจสอบอีกต่อไป
JAD

3

Javagony - 153 ไบต์

Javagony เป็นเวอร์ชัน จำกัด ของ Java ซึ่งไม่อนุญาตให้มีโฟลว์การควบคุมใด ๆ ยกเว้นการเรียกซ้ำและtry-catchไม่ใช้ลูปในขณะที่ลูปหรือหากเป็น การเขียนโค้ดในนั้นเป็นแบบฝึกหัดที่สนุก แต่ก็น่าหงุดหงิด ไม่ใช่จาวาปกติที่ไม่น่าแปลกใจ

int a(int i){return a(i-1,1111);}int a(int i,int n){try{int x=1/i;return a(i-1,Integer.parseInt((n*n+"").substring(0,4)));}catch(Exception e){return n;}}

3

PHP, 55 52 ไบต์

บันทึกแล้ว 3 ไบต์ด้วย @ user59178

for($i=1111;$argv[1]--;)$i=substr($i**2,0,4);echo$i;

เรียกใช้จากบรรทัดคำสั่ง zero-indexed

ขอบคุณที่ไม่ใส่ใจว่าตัวแปรของฉันคืออะไร PHP! ที่นี่เราเพียงแค่ใส่จำนวนและตัดทุกอย่างที่ผ่านตัวเลข 4 ตัวแรกสลับกันระหว่างตัวเลขกับสตริงโดยไม่สนใจโลก


คุณสามารถบันทึก 3 ไบต์โดยใช้$argv[1]--เป็นตัวนับลูป
user59178



2

Clojure, 76 bytes

(defn s[n](if(= n 1)1111(read-string(subs(str(*(s(dec n))(s(dec n))))0 4))))

First Clojure golf (seems like a nice language). This is 1-indexed.

Will explain the code later.


2

C#, 64 60 bytes

Saved 4 bytes by following Olivier Grégoire's comment on a Java answer!

n=>{int x=1111;for(;n-->1;)for(x*=x;x>1e4;x/=10);return x;};

Previous version (64 bytes):

n=>{int x=1111;while(n-->1){x*=x;while(x>9999)x/=10;}return x;};

Full program with ungolfed method and test cases:

using System;

namespace SquaringSequence
{
    class Program
    {
        static void Main(string[] args)
        {
            Func<int, int> f = n =>
            {
                int x = 1111;
                while (n-- > 1)
                {
                    x *= x;
                    while (x > 9999)
                        x /= 10;
                }
                return x;
            };

            // test cases:
            Console.WriteLine(f(1));    // 1111
            Console.WriteLine(f(8));    // 6840
            Console.WriteLine(f(15));   // 7584
            Console.WriteLine(f(20));   // 1425
            Console.WriteLine(f(80));   // 4717
        }
    }
}

1
+1 for the dark goes-to-operator n-->1
Karl Napf

2

Ruby, 47 bytes

First golf! Saves bytes with -n option (but still count as 1! :)).

a=1111;$_.to_i.times{a="#{a*a}"[0,4].to_i};p a

0-indexed. To run it:

ruby -ne 'a=1111;$_.to_i.times{a="#{a*a}"[0,4].to_i};p a' <<< 80

Welcome to the site, and nice first answer! One nitpick though, technically this is 47 bytes because of our policy of counting command line flags towards the byte count. Other than that, it looks good to me!
DJMcMayhem

Thanks! Didn't know the rules, answer changed!
ghivert

2

Pyth, 13 12 bytes

Thanks to @Jakube for -1 byte

us<*4`*GG4Q1

A program that takes input of a 1-indexed integer and prints the result.

Test suite

This uses a similar approach to @Adnan's answer.

How it works

us<*4`*GG4Q1  Program. Input: Q
u         Q1  Execute the following Q times, starting at 1, with variable G:
      *GG      Yield G*G
     `          Convert to string
   *4           Repeat 4 times
  <      4      Yield first 4 characters
 s              Convert to integer
              Implicitly print

1
*GG instead of ^G2<space>
Jakube


1

Batch, 82 bytes

@set n=1111
@for /l %%i in (1,1,%1)do @set/an*=n&call set n=%%n:~0,4%%
@echo %n%

Like Perl, integers are strings, but unlike Perl I can only take the substring of a variable, and taking substrings inside a loop is somewhat awkward.


I think you can leave out the space after @for.
YourDeathIsComing

@YourDeathIsComing 'for' is not recognised as an internal or external command, operable program or batch file.
Neil

1

Perl 6, 36 bytes

{(1111,{+$_².substr(0,4)}...*)[$_]}

Explanation:

{                                 } # bare block lambda
  1111,                  ...        # sequence generator
                            *       # without a limit
       {                }           # lambda used to generate the next value
         $_²                        # start by squaring the previous value
            .substr(0,4)            # take only the first four digits
        +                           # make it numeric ( not necessary )
 (                           )[$_]  # return the requested value

Test:

say {(1111,{+$_².substr(0,4)}...*)[$_]}( 1,8,15,20,80 X- 1 ).perl
# (1111, 6840, 7584, 1425, 4717)

1

Matlab, 79, 78 Bytes

function a=s(n)
if n<2;a=1111; else f=s(n-1);a=fix(f^2/10^(3+(f>1e7^.5)));end

Test cases:

s(79) = 2172
s(49) = 8059
s(6)  = 2876

Not an amazing solution. I'm sure there must be a better way to truncate to 4 digits but I don't know today.

Edit: Shaved a byte by setting 0.5 -> .5


1

Java 8, 77 93 74 71 69 78 bytes

int n=1111;int m=1;while(x>m++){n=Integer.parseInt((n*n+"").substring(0,4));}

x->{int n=1111;int m=1;while(x>m++){n=Integer.parseInt((n*n+"").substring(0,4))‌​;}return n;}

x->{int n=1111;for(;--x>0;){n=Integer.parseInt((n*n+"").substring(0,4));}}

x->{long n=1111;for(;--x>0;){n=Long.valueOf((n*n+"").substring(0,4));}}

x->{long n=1111;for(;--x>0;)n=Long.valueOf((n*n+"").substring(0,4));return n;}

Each repetition makes n the first 4 characters of n*n.

Try Java online!

Post history:

  • 77 bytes: initial code (incomplete)

  • +16 bytes, by Olivier Grégoire: completed code by making it a Lambda function.

  • -19 bytes: replace while with for cycle.

  • -4 bytes: used longs instead of ints

  • -2 bytes, by Roman Gräf: removed unnecessary brackets

  • +9 bytes, missing return statement

Thanks to @OlivierGrégoire and @RomanGräf for pointing out some issues!

Wait, Java beats... (drumroll) Clojure and Matlab here! A big applause to Java please!


2
This answer is incomplete. x isn't declared. This should be a function or full program. Not a code snippet.
NonlinearFruit

@NonlinearFruit I was going for the function. Seems I missed this out. Do you mean I should just replace x with a number?
RudolfJelin

1
What @NonlinearFruit said is that your answer, with your current code, sould be: x->{int n=1111;int m=1;while(x>m++){n=Integer.parseInt((n*n+"").substring(0,4));}return n;} (for a total byte count of 91). This is because snippets aren't allowed: only functions or full programs.
Olivier Grégoire

@OlivierGrégoire Isn't that 93 bytes? And thanks for pointing out lambda funcions.
RudolfJelin

You're right, it's 93 bytes, I must have checked from a previous, defect version. However, all I did was wrapping so that your program would be a valid entry. Now you can golf the hell out of it! For instance, here's a golfed version of your program for only 75 bytes: x->{Long n=1111;for(;--x>0;)n=n.valueOf((n*n+"").substring(0,4));return n;}, with several techniques used (used Long to be able to use Long.valueOf with less bytes, it's not recommended in normal programming, but totally in golfing; removed m as it's unnecessary if we decrease x instead, removed unneeded braces)
Olivier Grégoire

1

Perl, 36 bytes

A different approach from the other Perl solution, leading to slightly shorter code. No command-line arguments are needed (other than the usual version selection argument, -M5.010, which doesn't count against the byte count), meaning that this is the same amount of code but with fewer penalties, giving a better overall score.

say+eval'($&*$&||1x4)=~/(....)/;'x<>

We create a loop Underload-style via repeating and eval-ing a string; I experimented with starting the string in the middle, but starting it at the start turns out to be shortest. We multiply $& (the result of the last regex match) by itself to square it; if the result's zero, we use 1x4 (i.e. 1111; Perl has an operator for repeating things, including digits of a number) instead of the result. Then we regex the first four characters. The whole thing runs in list context due to being inside say, thus the final result of the eval will be the contents of the parentheses of the final match.


1

Java, 79 67 66 64 bytes

  • Version 2.2/64 bytes:

Thanks to @Oliver Grégoire.

int a(int i){i=i<2?1111:a(--i);for(i*=i;i>1e4;)i/=10;return i;}
  • Version 2.1/66 bytes:

Thanks to @ETHProduction.

long a(long i){i=i<2?1111:a(--i);for(i*=i;i>1e4;)i/=10;return i;}
  • Version 2.0/67 bytes:

Replaced substring and stuff with the idea from @Xanderhall

long a(long i){i=i<2?1111:a(--i);i*=i;for(;i>1e4;)i/=10;return i;}
  • Version 1.0/79 bytes:

Although there are shorter solutions I wanted to post one recursive:). And I am the shortest "real" function:). Edit: Seems like I am the shortest now:)))

long a(long i){i=i<2?1111:a(--i);return Long.valueOf((i*i+"").substring(0,4));}

Can you do for(i*=i;i>1e4;)i/=10;? That would save a byte.
ETHproductions

Hmmm... Regarding your claim about the shortest Java function, this function would like to have some words ;-)
Olivier Grégoire

Hmmm, thinking about it, why do you even use longs? You can kill two bytes by using ints.
Olivier Grégoire

I missed that when I updated to 2.0
Roman Gräf

1

Pushy, 26 20 bytes

1111@:2esL4-:.;Kjk;#

Give arguments on the commandline: $ pushy sqseq.pshy 79.

Nicely formatted, with explanation:

            % Implicit: N is on stack
1111@       % Push 1111, and then reverse stack to get [1111, n]
:           % N times do: (this consumes N)
 2e         %   Square last term
 s          %   Split into individual digits
 L4-:.;     %   Get stack length -4, pop that many times
 Kj         %   Join remaining digits (Uses flag "K" for whole stack)
 k          %   Set "K" flag to false, so operations only affect last item
;           % End loop.       
#           % Output final calculated term
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.