স্কোয়ারিং সিকোয়েন্স


29

স্কোয়ারিং সিকোয়েন্সের প্রতিটি শব্দ, x এন , x এন -1 গ্রহণ করে স্কোয়ার করে এবং প্রথম চারটি সংখ্যা বাদে সমস্ত অপসারণ করে তৈরি হয়।

ক্রমটি সর্বদা x 1 = 1111 দিয়ে শুরু হয় । স্কোয়ারিংয়ের ফলে 1234321 পাওয়া যায়, তাই x 2 = 1234

প্রথম কয়েকটি পদ হ'ল:

1111
1234
1522
2316
5363
...

চ্যালেঞ্জ

আপনার টাস্কটি হ'ল একটি অ-নেতিবাচক পূর্ণসংখ্যা n দেওয়া হয় , x n গণনা করুন । আপনি একটি পুরো প্রোগ্রাম যা সঞ্চালিত ইনপুট / আউটপুট, বা ফাংশন যা লাগে জমা দিতে পারেন এন একটি প্যারামিটার হিসাবে।

আপনার সমাধানটি শূন্য বা এক সূচকযুক্ত হতে পারে, যতক্ষণ আপনি কোনটি নির্দিষ্ট করেন।

এই অনুক্রমের সমস্ত শর্তাবলী 5 টি সংখ্যার চেয়ে কম, আপনার কোডটি যতটা সম্ভব ছোট হওয়া উচিত। স্ট্যান্ডার্ড লুফোলস প্রয়োগ হয়।

সেরা গল্ফার জয় হোক!


পরীক্ষার মামলা

দ্রষ্টব্য: এগুলি 1-সূচকযুক্ত।

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

উত্তর:


11

05 এ বি 1 ই , 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

সিপি -1222 এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!


3
আমাকে 20 সেকেন্ডের মধ্যে মারধর করুন :(।
যাদু অক্টোপাস

24

জাভাস্ক্রিপ্ট (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

হাস্কেল, 40 বাইট

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

এটি 0-ভিত্তিক ক্রম। ব্যবহারের উদাহরণ: ((iterate(read.take 4.show.(^2))1111)!!) 79-> 4717

কিভাবে এটা কাজ করে:

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

গণিত, 48 বাইট

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

একটি পূর্ণসংখ্যার যুক্তি গ্রহণ করে নামহীন ফাংশন; 0-ইন্ডেক্স। ব্যবহার চার তিন বাইট অক্ষর ⌊⌊⌋⌋: ম্যাথামেটিকাল ব্যবহারসমূহ পারেন Floor[x]বা ⌊x⌋একটি বাস্তব সংখ্যা রাউন্ডে একটি পূর্ণসংখ্যা নিচে, এবং পরবর্তীটি সাধারণত এক কম বাইট। পূর্ণসংখ্যার স্ট্রিংগুলিতে রূপান্তরিত করার জন্য ম্যাথামেটিকায় কমান্ডের নামগুলি দীর্ঘ, সেই শক্তিতে 10 ফিরে আসুন এবং 1000 এবং রাউন্ড ডাউন দিয়ে গুণ করুন।

tl; dr: লগারিদম এফটিডব্লিউ


6

পাইথন 2, 51 46 44 বাইট

আমি 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])
অ্যাক্রোলিথ

@ ডাগ হাগলেনি যা আসলে 45 হতে পারে: repl.it/EeJD
ফ্লিপট্যাক

1
@ Flp.Tkc এবং এটি আসলে 44% হতে পারে)
কেডে

5

ভি , 19 বাইট

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

এটি অনলাইন চেষ্টা করুন!

এটি 0-ভিত্তিক সূচক ব্যবহার করে।

অবশ্যই, যেহেতু সংখ্যা ঠিক ভী এর নয় উচ্চনিনাদী , এই খুব golfy হয়। যাইহোক, এটি ভি এর চেয়ে বেশি ভিমের একটি দুর্দান্ত সুবিধা দেখায়। আপনি 0 বার ম্যাক্রো চালনা করতে পারেন , যা ভিমে সম্ভব নয় যেহেতু '0' একটি কমান্ড নয় কমান্ড।

এটিতে অনেকগুলি মুদ্রণযোগ্য অক্ষর রয়েছে, সুতরাং এখানে হেক্সডাম্প রয়েছে:

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.

এটি 1-ভিত্তিক সূচক সহ 3 বাইট সাশ্রয় করে।
ডেনিস

উহ, আপনি এর 1পরিবর্তে ব্যবহার করতে পারবেন বলে আমি মনে করি না ⁽¡n
এরিক আউটগলফার

নিবন্ধন করুন
শার্লক 9

@ শেরলক 9 ওহ, আপনি কি এই ক্রমটি 1-সূচক বলে মনে করছেন? হুঁ, কোড মত দেখাচ্ছে বুঝতে ... একটি বিট কূট হয়
এরিক Outgolfer

4

পার্ল, 37 বাইট

কোড + -pপতাকা 36 বাইট ।

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

এটি চালানোর জন্য:

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

4

পাওয়ারশেল, 73 55 বাইট

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হয় এন মধ্যে এক্স এন -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

কিছু নোট:

  • পাওয়ারশেল আপনাকে একই বিবৃতিতে পরিবর্তনগুলি নির্ধারণ করতে দেয় যেখানে আপনি সেগুলি উল্লেখ করেন। উদাহরণস্বরূপ, 1..($n=4)|%$ n থেকে 4 সেট করবে এবং তারপরে একটি লুপ শুরু হবে যা runs n বার চলবে। 1যে কোনও পূর্ণসংখ্যায় পরিবর্তন করা যেতে পারে এবং এটি your n- [আপনার পূর্ণসংখ্যা] +1 বার লুপ করবে।
  • [math]::পাওয়ারশেল ব্যবহার করার সময় ডিফল্ট ডেটা টাইপ একটি ডাবল। উপরের কোডে, আমাদের স্পষ্টভাবে $Bএকটি স্ট্রিংতে কাস্ট করতে হবে যাতে আমরা .substring()এটির জন্য কল করতে পারি কারণ .substring()পাওয়ারশেলের ডাবলসের জন্য কোনও কার্যকারিতা নেই ।

4

পাইথন 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ফলস্বরূপ, যা সত্যবাদী এবং int 1111কাস্ট করা intহয় 1111


ভাল, আমাকে এক বাইট করে নিনজা!
ফ্লিপট্যাক

আমি আপনার উত্তরটি সন্ধান করেছি এবং তখন বুঝতে পারি আপনি চ্যালেঞ্জটি লিখেছেন! সুন্দর কাজ.
জোনাথন অ্যালান

1
intবাহিরে নিয়ে ভালো ধারণা । আপনি যদি 1-সূচক হন তবে আপনি বেস কেসটি আরও ছোট করে করতে পারেন g=lambda n:int(1/n*1111or`g(n-1)**2`[:4])
xnor

1
"ক্রস আউট 44 এখনও 44 :( এর মতো দেখাচ্ছে"
ফ্লিপট্যাক

1
@ Flp.Tkc &nbsp;এস ছাড়া যতটা হয় না !
জোনাথন অ্যালান



3

এমএটিএল , 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(বর্গক্ষেত্র, সংখ্যার ইনপুট জন্য) instedt*
লুই মেন্ডো

1
@ লুইস মেন্ডো আমি প্রস্তাবিত ফাংশনটি মনে করিয়ে দেওয়ার জন্য ধন্যবাদ! : পি
ডিজেএমসিএমহেম

3

আর, 58 56 55 53 বাইট

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

স্টিডিন Nথেকে গ্রহণ । 3334 কার্যত এক্স টি, যা প্রয়োজন কারণ ফোর-লুপটি কমপক্ষে একবার সম্পাদন করা প্রয়োজন (এটি এড়াতে দীর্ঘতর হবে)।

কোনও সংখ্যার প্রথম চারটি অঙ্ক নেওয়ার জন্য আর সত্যই ভয়ঙ্কর একটি ভাষা, তবে যেহেতু মামলার সংখ্যা সীমাবদ্ধ, আমরা কেবলমাত্র এর স্কোয়ারগুলি নিয়েই চিন্তা করতে হবে x<3163এবং x>3162প্রাক্তনটি একটি 6 সংখ্যার সংখ্যার, পরে 7 নম্বর সংখ্যার ফলন করবে ।

বাকিগুলি বেশ সোজা, বাকী %/%অংশগুলি ভাগ করে এবং উপেক্ষা করে। xstdout মুদ্রিত হয়।

2 বাইট সংরক্ষিত হয়েছে @ ইথ প্রডাকশনগুলির জন্য ধন্যবাদ


এটি এতটা কৃত্রিম। উজ্জ্বল!
Andreï Kostyrka

1
সুন্দর! আপনি 3334(বা সম্ভবত 3333) দিয়ে শুরু করলে কী হবে ?
ETH প্রোডাকশনগুলি

@ পাঠ্য উত্পাদনের 3333^2 = 11108889ফলে ফলন হবে 1110, এবং .... আমি এই পরীক্ষা করে দেখছি 3334যে কাজ করবে: | । কেন আমি আর এটি চেক করিনি তা নিশ্চিত নয়।
জেএডি

3

জাভাগনি - 153 বাইট

জাভাগনি জাভার একটি সীমাবদ্ধ সংস্করণ, যা পুনরাবৃত্তি ব্যতীত কোনও নিয়ন্ত্রণ প্রবাহকে অনুমতি দেয় 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

পিএইচপি, 55 52 বাইট

@ ব্যবহারকারী59178 এর জন্য 3 বাইট সংরক্ষণ করা হয়েছে

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

কমান্ড লাইন থেকে চালান, শূন্য-সূচকযুক্ত।

আমার ভেরিয়েবলগুলি কী ধরণের তা যত্নশীল না করার জন্য ধন্যবাদ, পিএইচপি! এখানে আমরা সংখ্যাটি কেবল স্কোয়ার করে বিশ্বে কোনও যত্ন ছাড়াই সংখ্যায় এবং স্ট্রিংয়ের মধ্যে সংক্ষেপে পরিবর্তিত হয়ে প্রথম 4 ডিজিটের অতীত সমস্ত কিছু ছাঁটাই করি।


$argv[1]--লুপ কাউন্টার হিসাবে ব্যবহার করে আপনি 3 বাইট সংরক্ষণ করতে পারেন।
ব্যবহারকারী59178


2

সি, 56 বাইট

a;s(n){for(a=1111;--n;)a=a*a/(a>3162?1e4:1e3);return a;}

এক-ইন্ডেক্স।


1
আমার অনুভূতি আছে যে আপনি পুনরাবৃত্তি করতে যেতে পারেন ...
মুকুল কুমার

2

Clojure, 76 বাইট

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

প্রথম ক্লোজার গল্ফ (একটি দুর্দান্ত ভাষার মতো মনে হচ্ছে)। এটি 1-সূচকযুক্ত।

কোডটি পরে ব্যাখ্যা করবে।


2

সি #, 64 60 বাইট

অনুসরণ করে 4 বাইট সংরক্ষিত অলিভিয়ের Gregoire এর মন্তব্য একটি জাভা উত্তরে!

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

পূর্ববর্তী সংস্করণ ( by৪ বাইট ):

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

অসম্পূর্ণ পদ্ধতি এবং পরীক্ষার কেস সহ সম্পূর্ণ প্রোগ্রাম:

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
অন্ধকার থেকে অপারেটরের জন্য +1n-->1
কার্ল ন্যাপফ

2

রুবি, 47 বাইট

প্রথম গল্ফ! -nবিকল্পের সাথে বাইটগুলি সংরক্ষণ করে (তবে এখনও 1 হিসাবে গণনা করুন :))।

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

0-ইন্ডেক্স। এটি চালানোর জন্য:

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

সাইটে স্বাগতম, এবং প্রথম প্রথম উত্তর! যদিও একটি নীটপিক, প্রযুক্তিগতভাবে এটি 47 বাইট কারণ আমাদের বাইট গণনার দিকে কমান্ড লাইন পতাকা গণনা করার নীতি । তা ছাড়াও আমার কাছে ভালো লাগছে!
ডিজেএমসিএমহেম

ধন্যবাদ! নিয়ম জানতেন না, উত্তর বদলে গেল!
ghivert

2

পাইথ, 13 12 বাইট

-১ বাইটের জন্য জাকুবকে ধন্যবাদ

us<*4`*GG4Q1

এমন একটি প্রোগ্রাম যা 1-ইনডেক্সড পূর্ণসংখ্যার ইনপুট নেয় এবং ফলাফল মুদ্রণ করে।

পরীক্ষা স্যুট

এটি @ আদনানের উত্তরের অনুরূপ পদ্ধতির ব্যবহার করে ।

কিভাবে এটা কাজ করে

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পরিবর্তে^G2<space>
জাকুব


1

ব্যাচ, 82 বাইট

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

পার্লের মতো, পূর্ণসংখ্যাগুলি স্ট্রিং হয় তবে পার্লের বিপরীতে আমি কেবলমাত্র একটি ভেরিয়েবলের সাবস্ট্রিং নিতে পারি এবং লুপের ভিতরে সাবস্ট্রিংগুলি নেওয়া কিছুটা বিশ্রী।


আমি মনে করি আপনি @ এর পরেও জায়গাটি ছেড়ে দিতে পারেন।
YourDeathIsComing

@YourDeathIsComing 'for' কোনও অভ্যন্তরীণ বা বাহ্যিক কমান্ড, অপারেবল প্রোগ্রাম বা ব্যাচ ফাইল হিসাবে স্বীকৃত নয়।
নীল

1

পার্ল 6 , 36 বাইট

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

ব্যাখ্যা:

{                                 } # 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

টেস্ট:

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

1

মতলব, 79 , 78 বাইট

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

পরীক্ষার কেস:

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

আশ্চর্য সমাধান নয় Not আমি নিশ্চিত যে আরও 4 টি সংখ্যার কাটানোর আরও ভাল উপায় থাকতে হবে তবে আমি আজ জানি না।

সম্পাদনা করুন: 0.5 -> .5 সেট করে একটি বাইট শেভ করেছেন


1

জাভা 8, 77 93 74 71 69 78 বাইট

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;}

প্রতিটি পুনরাবৃত্তি nপ্রথম 4 টি চরিত্র তৈরি করে n*n

অনলাইনে জাভা চেষ্টা করে দেখুন !

পোস্টের ইতিহাস:

  • 77 বাইট: প্রাথমিক কোড (অসম্পূর্ণ)

  • অলিভিয়ার গ্রাগোয়ারের +16 বাইট: ল্যাম্বডা ফাংশন তৈরি করে কোডটি সম্পূর্ণ করেছেন।

  • -19 বাইট: চক্র whileসঙ্গে প্রতিস্থাপন for

  • -4 বাইট: longগুলি এর পরিবর্তে ব্যবহৃত intএস

  • -২ বাইট, রোমান গ্রাফ দ্বারা: অপ্রয়োজনীয় বন্ধনী অপসারণ করা হয়েছে

  • +9 বাইট, অনুপস্থিত returnবিবৃতি

@ অলিভিয়ারগ্রোগোয়ার এবং @ রোমানগ্রাফকে কিছু সমস্যা দেখানোর জন্য ধন্যবাদ !

অপেক্ষা করুন, জাভা beats ... (ড্রামের আওয়াজ) Clojure এবং মতলব এখানে! দয়া করে জাভার একটা বড় হাততালি!


2
এই উত্তরটি অসম্পূর্ণ। xঘোষিত নয় এটি একটি ফাংশন বা সম্পূর্ণ প্রোগ্রাম হওয়া উচিত। কোনও কোড স্নিপেট নয়।
ননলাইনারফ্রুট

পুনঃটুইট করুন মনে হচ্ছে আমি এটিকে মিস করেছি। আপনি কি বলতে চান যে আমি কেবল একটি সংখ্যার সাথে এক্স প্রতিস্থাপন করব?
রুডলফ জেলিন

1
@ ননলাইনারফ্রুট যা বলেছে তা হ'ল আপনার বর্তমান কোড সহ আপনার উত্তরটি সাবলীল হবে: x->{int n=1111;int m=1;while(x>m++){n=Integer.parseInt((n*n+"").substring(0,4));}return n;}(মোট বাইট গণনা ৯১ এর জন্য)। এটি কারণ স্নিপেটগুলি অনুমোদিত নয়: কেবল ফাংশন বা সম্পূর্ণ প্রোগ্রাম।
অলিভিয়ের গ্রাগোয়ার

@ অলিভিয়ারগ্রোগোয়ার 93৩ বাইট না? এবং ল্যাম্বদা ফানকিশনগুলি নির্দেশ করার জন্য ধন্যবাদ।
রুডলফ জেলিন

আপনি ঠিক বলেছেন, এটি 93 বাইট, আমি অবশ্যই পূর্ববর্তী, ত্রুটিপূর্ণ সংস্করণ থেকে পরীক্ষা করে দেখেছি। যাইহোক, আমি যা করেছি তা মোড়ানো ছিল যাতে আপনার প্রোগ্রামটি একটি বৈধ এন্ট্রি হবে। এখন আপনি এটি থেকে গল্ফ করতে পারেন! উদাহরণস্বরূপ, এখানে কেবলমাত্র 75 বাইটের জন্য আপনার প্রোগ্রামটির একটি গল্ফড সংস্করণ রয়েছে: x->{Long n=1111;for(;--x>0;)n=n.valueOf((n*n+"").substring(0,4));return n;}বিভিন্ন কৌশল ব্যবহার করে ( কম বাইটের সাহায্যে ব্যবহৃত Longহতে পারে Long.valueOfএটি সাধারণ প্রোগ্রামিংয়ে প্রস্তাবিত নয়, পুরোপুরি গল্ফিংয়ে; mঅপ্রয়োজনীয় হিসাবে সরানো হয়েছে যদি আমরা হ্রাস করি তবে xপরিবর্তে, অপ্রয়োজনীয় বন্ধনীগুলি সরান)
অলিভিয়ের গ্রাগোয়ার

1

পার্ল, 36 বাইট

অন্যান্য পার্ল সমাধান থেকে একটি পৃথক পদ্ধতি, যা সামান্য সংক্ষিপ্ত কোডের দিকে নিয়ে যায়। কোনও কমান্ড-লাইন আর্গুমেন্টের প্রয়োজন নেই (সাধারণ সংস্করণ নির্বাচনের যুক্তি ব্যতীত, -M5.010যা বাইট গণনাটির তুলনায় গণনা করা হয় না), অর্থাত্ এটি একই পরিমাণের কোড তবে কম পেনাল্টির সাথে আরও ভাল সামগ্রিক স্কোর দেয়।

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

আমরা evalএকটি স্ট্রিং পুনরাবৃত্তি এবং -িংয়ের মাধ্যমে একটি লুপ আন্ডারলোড-স্টাইল তৈরি করি ; আমি মাঝখানে স্ট্রিংটি শুরু করার সাথে পরীক্ষা করেছিলাম, তবে এটি শুরুতে শুরু করলে সংক্ষিপ্ততর হয়। আমরা সংখ্যাবৃদ্ধি $&(শেষ Regex ম্যাচের রিজাল্ট) নিজে এটা বর্গক্ষেত্র করা; যদি ফলাফলটির শূন্য হয়, আমরা ফলাফলের পরিবর্তে 1x4(যেমন 1111; একটি সংখ্যার অঙ্ক সহ জিনিসগুলি পুনরাবৃত্তি করার জন্য পার্লের একটি অপারেটর আছে) ব্যবহার করি। তারপরে আমরা প্রথম চারটি অক্ষরকে রেজেক্স করি। ভিতরে থাকার কারণে পুরো জিনিসটি তালিকার প্রসঙ্গে চলে say, সুতরাং চূড়ান্ত ফলাফলটি evalচূড়ান্ত ম্যাচের প্যারেন্টেসিসের বিষয়বস্তু হবে।


1

জাভা, 79 67 66 64 বাইট

  • সংস্করণ 2.2 / 64 বাইট:

অলিভার গ্রাগোয়ারকে ধন্যবাদ

int a(int i){i=i<2?1111:a(--i);for(i*=i;i>1e4;)i/=10;return i;}
  • সংস্করণ 2.1 / 66 বাইট:

@ ইটিপি প্রডাকশনকে ধন্যবাদ।

long a(long i){i=i<2?1111:a(--i);for(i*=i;i>1e4;)i/=10;return i;}
  • সংস্করণ 2.0 / 67 বাইট:

@ সান্দ্রহাল থেকে ধারণার সাথে স্ট্রিং এবং স্টাফ প্রতিস্থাপন করা হয়েছে

long a(long i){i=i<2?1111:a(--i);i*=i;for(;i>1e4;)i/=10;return i;}
  • সংস্করণ 1.0 / 79 বাইট:

যদিও সংক্ষিপ্ত সমাধানগুলি আমি একটি পুনরাবৃত্ত পোস্ট করতে চেয়েছিলাম :)। এবং আমি স্বল্পতম "আসল" ফাংশন :)। সম্পাদনা: মনে হচ্ছে আমি এখনই সবচেয়ে কম :)))

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

আপনি কি করতে পারেন for(i*=i;i>1e4;)i/=10;? এটি একটি বাইট সংরক্ষণ করতে পারে।
ইটিএইচ প্রোডাকশনস

হুম ... সংক্ষিপ্ত জাভা ফাংশন সম্পর্কে আপনার দাবির বিষয়ে, এই ফাংশনটিতে কিছু শব্দ থাকতে হবে ;-)
অলিভিয়ার গ্রাগোয়ার

হুমম, ভাবছেন, আপনি কেন longএস ব্যবহার করেন ? intS ব্যবহার করে আপনি দুটি বাইট মেরে ফেলতে পারেন ।
অলিভিয়ার গ্রাগোয়ার

আমি মিস করেছি যে আমি যখন 2.0 তে আপডেট করেছি
রোমান গ্রাফ

1

পুশি , 26 20 বাইট

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

কমান্ড উপর আর্গুমেন্ট দিন: $ pushy sqseq.pshy 79

সুন্দরভাবে ফর্ম্যাট করা হয়েছে, ব্যাখ্যা সহ:

            % 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.