'^' ব্যবহার না করে হাইপার এক্সপ্লেনসেশন / টিট্রেশন প্রয়োগ করুন


28

চ্যালেঞ্জ

বাস্তবায়ন tetration অক্ষর অন্তত পরিমাণ সঙ্গে (ওরফে পাওয়ার টাওয়ার বা Hyperexponentiation)।

শর্তসমূহ

  • ক্ষমতা কি অপারেটর বা তার সমতুল (যেমন ব্যবহার করবেন না pow(x,y), x^y, x**y, ইত্যাদি)
  • ইনপুট হিসাবে দেওয়া হয়েছে: x y(একটি স্থান দ্বারা পৃথক)
  • xনিজেই yসময় দ্বারা exponentiated হয় ।
  • আপনার পদ্ধতিটি অবশ্যই কমপক্ষে গণনা করতে সক্ষম হবে 4 3(4 বার নিজেই এটি প্রকাশিত হবে 3 বার)

স্কোরিং

  • সর্বনিম্ন স্কোর জয়: (# টি অক্ষরের)
  • আপনি যদি গুণক অপারেটর (-5 পয়েন্ট) ব্যবহার না করেন তবে বোনাস ছাড়।
  • কোন গতি / মেমরির প্রয়োজন নেই। যতক্ষণ ইচ্ছা ততক্ষণ নিন।

উদাহরণ

x, 0 -> 1

2, 2 -> 2^2 = 4

2, 4 -> 2^(2^(2^2)) = 65536

4, 3 -> 4^(4^4) = 4^256 = 13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096

পরামর্শ / পরিবর্তন / প্রশ্নগুলির জন্য উন্মুক্ত


4
আমার যে পরিবর্তনটি মোটামুটি গুরুত্বপূর্ণ বলে মনে হয় তা হল "* অপারেটর" কে "গুণিত অপারেটর" দিয়ে প্রতিস্থাপন করা। গল্ফস্ক্রিপ্টে *কিছু প্রসঙ্গে গুণ করা যায় তবে এটি সাধারণ লুপিং অপারেটর: {block}N*সি-স্টাইলের সমতুল্য for(i=0;i<N;i++){block}। জটিল প্রান্তের কেসটি স্ট্রিং / অ্যারের গুণক ( 'a'3*দেয় 'aaa'), তবে এটির একটি সমস্যা হওয়ার সম্ভাবনা কম 4***3
পিটার টেলর

3
প্রান্তের কেস x 0=> ১ এর জন্য একটি পরীক্ষা যুক্ত করার মতো মূল্যও আমার মূল সমাধানটি কেসটি পরিচালনা করে নি।
পিটার টেলর

3
গুণ ব্যবহারের জন্য জরিমানাটি খুব কম। (: = এটি ব্যবহার না করার জন্য বোনাস)। আমি একটি সমাধান তৈরি করেছি যা এটি ব্যবহার করে নি, এবং স্ট্যাকের ওভারফ্লোগুলি এড়াতে এটি প্রতিস্থাপন করতে হয়েছিল এবং 5 টি চার বোনাস হারাতে 7 চারের জয় অর্জন করেছিল।
ব্যবহারকারী অজ্ঞাত

2
@ ইঞ্জিনিয়ারস্টোস্ট আপনি যা যুক্ত করেছেন তার 4 বছর আগে আমি এই গল্ফ পোস্ট করেছি ...
মিঃজান্ডার

2
শর্ত এবং স্কোরিং এক ধরণের অদ্ভুত। আপনি কি বিদ্যুৎ কার্যক্রম ব্যবহারের অনুমতি দিচ্ছেন না? বা আপনি তাদের অনুমতি দিন, কিন্তু তারা কি একটি +10 পয়েন্ট বোনাস?
কেবল সুন্দর আর্ট

উত্তর:


16

জে, স্কোর হ'ল 7 (12 টি অক্ষর - গুণন এড়ানোর জন্য 5 পয়েন্ট)

+/@$/@$~/@$~

ব্যবহার:

   4 +/@$/@$~/@$~ 3
1.34078e154
t=.+/@$/@$~/@$~  NB. define a function
   4 t 3
1.34078e154
   2 t 2
4

মাত্র কয়েকটি নেস্টেড ভাঁজ:

  • গুণটি ব্যবহার করে এটি হবে */@$~/@$~
  • শক্তি ব্যবহার করে এটি হবে ^/@$~যেখানে $~অ্যারে তৈরি করে, /এটি একটি ভাঁজ ফাংশন।

সুন্দরভাবে সম্পন্ন. (প্যাড)
গ্যারেথ

@ গ্যারেথ থ্যাঙ্কস, তবে padএখানে কি বোঝানো হয়েছিল ? দুঃখিত, ইংরেজি আমার মাতৃভাষা নয়।
অগস্ট

5
আমার বার্তাটি খুব সংক্ষিপ্ত ছিল তাই আমার এটি ছড়িয়ে দেওয়ার দরকার ছিল। :-)
গ্যারেথ

আপনি কি একযোগে আরও একটি সরবরাহ করে পেন্টেশন পেতে পারেন @$~?
জোনাহ

@ জোনাঃ আপনার প্রয়োজন হবে /তবে হ্যাঁ। আপনি নেস্টেড ফোল্ডিং ফাংশনটিতে যতবার প্রয়োজন ততবার ভাঁজ করছেন।
হাইপারনিউটারিনো

15

Haskell,, 87 85 - 5 == 80 82

import Data.List
t x=genericLength.(iterate(sequence.map(const$replicate x[]))[[]]!!)

ক্ষয়ক্ষতি, গুণ বা সংযোজন (!) এর কোনওটিই ব্যবহার করে না, কেবল অপারেশন তালিকাবদ্ধ করুন। প্রদর্শন:

Prelude> :m +Data.List
Prelude Data.List> let t x=genericLength.(iterate(sequence.map(const$replicate x[]))[[]]!!)
Prelude Data.List> t 2 2
4
Prelude Data.List> t 2 4
65536
Prelude Data.List> t 4 3

...
আহম ... আপনি পারফরম্যান্স বা স্মৃতি সম্পর্কে কিছু বলেননি, তাই না? তবে পর্যাপ্ত পরিমাণ বিলিয়ন বছর এবং র্যামের কিছু পেটাবাইট দেওয়া হলেও এটি এখনও সঠিক ফলাফল পেতে পারে (জেনেরিক্লেন্থ তালিকাটির দৈর্ঘ্য গণনা করতে বিগ আইন্ট ব্যবহার করতে পারে)।


1
আমি বিশ্বাস করি 3012 এর মধ্যে আপনার কাছে আমার একটি উত্তর থাকবে? ;)
মিঃজান্ডার 21

6
আমি মুর আইন থেকে কিছু সাহায্য প্রয়োজন, কিন্তু এটি আমি দিতে পারে।
জবাব দেওয়া বন্ধ করে দেওয়া হয়েছে

12

গল্ফস্ক্রিপ্ট, 15 18 টি অক্ষর

~])*1\+{[]+*{*}*}*

হ্যাঁ, *এর মধ্যে একটি হ'ল একটি গুণক অপারেটর (অনুশীলন: কোনটি?) তাই আমি 5 চরের বোনাসের জন্য যোগ্যতা অর্জন করি না। তবুও, এটি পিটারের সমাধানের তুলনায় খুব কম ।

পূর্বের 15-চর সংস্করণটি অন্যথায় একই, তবে দ্বিতীয় আর্গুমেন্ট 0 হলে কোনও আউটপুট তৈরি হয় না the বাগটি চিহ্নিত করার জন্য ধন্যবাদ।

~])*{[]+*{*}*}*

এটি মারাত্মক ত্রুটিগুলি উত্পন্ন করে, যেমন সহ "2 3" ~])*{[]+*{*}*}*
মাঝামাঝি

@ এখনও, এটি আমার জন্য সঠিক উত্তর দেয়।
পিটার টেলর

@ রেস: এটি ধরে নিয়েছে যে স্ট্যাকের বাইরে ইনপুট ছাড়া আর কিছুই নেই। আপনি যদি উদাহরণস্বরূপ ইনপুট ইনপুট সরবরাহ করতে চান তবে প্রথমে ;দোভাষী দের স্ট্যাক-এ স্ট্যাকের মধ্যে রাখা প্রকৃত ইনপুট স্ট্রিংটি সরিয়ে ফেলতে ব্যবহার করুন। অথবা শুধু একটি পূর্বে লিখুন [উভয়: কোডে ;"2 3" ~])*{[]+*{*}*}*এবং "2 3" [~])*{[]+*{*}*}*আমার জন্য কাজ জরিমানা।
ইলমারি করোনেন

(+1) ধন্যবাদ! এই প্রকরণগুলি আমার জন্য একটি রহস্য সমাধান করে। টিউটোরিয়াল বলে "আপনি নল ইনপুট করতে হবে না, কিন্তু আপনি যদি না, এটা পরিবর্তে ইনপুট জন্য প্রম্পট করবে না, এটা অনুমান করা হবে কোন ইনপুট আছে ।" সুতরাং আমি ruby golfscript.rb my_script.gsকমান্ড লাইনে কেবল ব্যবহার করছি , এটি না জেনে যে স্ক্রিপ্টটি চালানোর আগে এটি কিছু ("", স্পষ্টতই) স্ট্যাকের মধ্যে রয়েছে - যা কখনও কখনও কাজ করে, কখনও কখনও হয় না। (এছাড়াও, সঙ্গে echo 2 3 | ruby golfscript.rb my_script.gs, আপনার প্রোগ্রাম আছে যেমন প্রদত্ত কাজের।)
মাঝামাঝি


10

জে, 16 19 12 টি অক্ষর

*/@$~/1,~$~/

বা ক্রিয়া হিসাবে (17 অক্ষর):

h=:[:*/@$~/1,~$~/

ব্যবহার:

   h 2 4
65536

বা কীবোর্ড থেকে ইনপুট নেওয়া ( 24 27 20 টি অক্ষর):

*/@$~/1,~$~/".1!:1]1

আমার বোকামি দেখানোর জন্য FUZxxl ধন্যবাদ দিয়ে । :-)

ব্যাখ্যা:

ডান থেকে বামে জে পড়া হয়, তাই ব্যবহার করে 2 4:

/$~তালিকার প্রতিটি জোড়া আইটেমের মধ্যে ক্রিয়াটি সন্নিবেশ করানোর জন্য ব্যবহৃত হয় । $~বাম আইটেমটি নেয় এবং ডান আইটেমটি $ব্যবহার করে এটি আকার দেয় ( ~আর্গুমেন্টগুলি বিপরীত করে) - সুতরাং এটি সমান হবে 4 $ 2যা আপনাকে 2চারটি আইটেম দীর্ঘ লম্বা একটি তালিকা দেয় 2 2 2 2

এখন আমরা তালিকায় 1 টি সংযোজন করি 1,~এবং তারপরে আবার একই জিনিসটি করি; তালিকার প্রতিটি জোড়া আইটেমের মধ্যে /একটি ক্রিয়া প্রবেশ করান */@$~। এই ক্রিয়া একই ভাবে শুরু হয় $~কিন্তু এই সময় এটি /একটি সন্নিবেশ *নতুনভাবে তালিকাটির প্রতিটি আইটেম মধ্যে। @ঠিক নিশ্চিত করে তোলে */@$~এক ক্রিয়া পরিবর্তে দুই হিসাবে কাজ করে। এটি 2নিজের দ্বারা বহুগুণে সমান হতে যথেষ্ট সময় দেয় 2^4

জে এর ভোকাবুলারি পৃষ্ঠা - আমি কখনও কখনও জিনিসগুলি বিভিন্নভাবে করি তার কারণেই আমি জে মজা নিয়ে সমস্যাগুলি সমাধান করতে পারি।

*অপারেটরটিকে অপসারণ করতে আরও একটি পুনরাবৃত্তি যুক্ত করতে 2 টি সমস্যা আছে

  • এটি 17 টি অক্ষর ( +/@$~/,@$~/1,~$~/) এ প্রকাশিত হয়েছে যা এমনকি -5 বোনাস সহ খুব দীর্ঘ
  • সংখ্যাটি যদি খুব বেশি বেড়ে যায় তবে এটি গণনা করতে সক্ষম হওয়ার প্রয়োজনীয়তা পূরণ করে না It 4 3

আপনি একটি ব্যাখ্যা প্রদান করতে পারেন? এটি আকর্ষণীয় দেখায়।
মিঃজান্ডার 21

@ মিঃজান্ডার একটি ব্যাখ্যা যুক্ত করতে আমার উত্তর সম্পাদনা করেছি।
গ্যারেথ

আমার আরও ভাল বোঝা বা আরও বিভ্রান্তি আছে কিনা তা নিশ্চিত নই, তবে ধন্যবাদ হাহা।
মিঃজান্ডার

ব্যাখ্যাটি বোঝায় যে পুরো জিনিসটি ক্ষমতার পরিবর্তে ক্ষয়ক্ষতি করছে। আমাদের মধ্যে কোন কিছু অনুপস্থিত?
পিটার টেলর

@ পিটারটেলর আমার সন্দেহ হয় আমার ব্যাখ্যা খুব স্পষ্ট নয়। যদি এটি টিট্রেশন করা হয় তবে আমি স্রেফ ব্যবহার করতে পারি ^/]$[যা তালিকা তৈরি করে 2 2 2 2এবং তাদের মধ্যে ক্ষতিকারক অপারেটরটি স্টিক করে রাখে। এটি যা করছে তা আরও এক ধাপ এগিয়ে চলেছে এবং বারবার গুণিত করে ক্ষয়ক্ষতি করে।
গ্যারেথ

8

গল্ফস্ক্রিপ্ট (24 টি অক্ষর - 5 = 19 পয়েন্ট)

~\1{1{0{+}?}?}{@\+@*}:?~

অত্যন্ত ধীর।

(বা 20 টি অক্ষর)

~\1{1{*}?}{@\+@*}:?~

অনেক দ্রুত।


2
যেহেতু গল্ফস্ক্রিপ্ট একটি রুবি প্রোগ্রাম, তাই আমরা আদর্শ :) আইডোন / জিটিআইটিপি পরীক্ষা করতে পারি । আমি গল্ফস্ক্রিপ্টের জন্য সমর্থন যোগ করার পরামর্শ দিয়েও ইমেল করেছিলাম।
মেল্লামোকব

@ মেল্লামোকব, তারা এটি যুক্ত করলে ভাল হবে তবে আমি খুব বেশি আশাবাদী না কারণ তাদের বর্ণিত নীতিটি এমন ভাষাগুলি যুক্ত করা যা তাদের ডিসট্রো দ্বারা সমর্থিত।
পিটার টেলর

আমি এটিও পড়েছি ... তবে যেহেতু তারা রুবিকে সমর্থন করে এবং গল্ফস্ক্রিপ্টটি কেবল একটি রুবি প্রোগ্রাম, এটি সহজ হওয়া উচিত :) কেবলমাত্র প্যাসিটারগুলিতে পাস হওয়া একটি বাশ স্ক্রিপ্ট তৈরি করুন।
মেল্লামোকব


6

পাইথন, 70

এটি নেস্টেড evalকলগুলি ব্যবহার করে অবশেষে একটি স্ট্রিং উত্পাদন করে "a*a*a*a...*a"যা মূল্যায়ন করে। স্কোরের প্রায় অর্ধেকটি আর্গুমেন্টগুলি পাওয়ার জন্য নষ্ট হয় ... যদিও আমি লক্ষ্য করেছি যে কয়েকটি অন্যান্য সমাধান সেটিকে বিরক্ত করে না।

a,b=map(int,raw_input().split())
exec"eval('*'.join('a'*"*b+'1'+'))'*b

যদি আমরা ধরে নিই যে আর্গুমেন্টগুলি কমা বিচ্ছিন্ন হয়েছে, আপনি চিয়ার্স ব্যবহার input()বা ব্যবহার করতে পারেনeval(raw_input())
st0le

1
@ st0le, দয়া করে প্রশ্নটি পড়ুন
বুথবি

সুন্দর. দ্বিতীয় লাইনটি আরও বেশি গল্ফ করা যেতে পারে: exec"eval('a*'*"*b+'1'+"+'1')"*b
ফ্লর্নকোকে

@ ফ্লর্নকোকে ভাল ধরা! ধন্যবাদ!
বুথবি

4

Scala: 110

type B=BigInt
def r(a:B,b:B,f:(B,B)=>B):B=if(b>1)f(a,r(a,b-1,f))else a
def h(a:B,b:B)=r(a,b,r(_,_,r(_,_,(_+_))))

ungolfed:

type B=BigInt
def recursive (a:B, b:B, f:(B,B)=>B): B = 
  if (b>1) f (a, recursive (a, b-1, f)) 
  else a
recursive (2, 3, recursive (_, _, recursive (_, _, (_ + _))))

ব্যাখ্যা:

type B=BigInt
def p (a:B, b:B):B = a+b
def m (a:B, b:B):B = if (b>1) p (a, m (a, b-1)) else a
def h (a:B, b:B):B = if (b>1) m (a, h (a, b-1)) else a
def t (a:B, b:B):B = if (b>1) h (a, t (a, b-1)) else a

প্লাস, মুল, উচ্চ (: = পাউ), টিট্রেশন সমস্ত একই পদ্ধতিতে কাজ করে। সাধারণ প্যাটার্নটি রিকার্সিভ পদ্ধতি হিসাবে উত্তোলন করা যেতে পারে, যা দুটি বিগআইএন্ট এবং একটি মৌলিক ফাংশন নেয়:

def r (a:B, b:B, f:(B,B)=>B):B = 
  if (b>1) f(a, r(a, b-1, f)) else a
r (4, 3, r (_,_, r(_,_, (_+_))))

আন্ডারলাইনগুলি এমন কোনও কিছুর জন্য স্থানধারক যা এই ক্রমটিতে ডাকা হয়, উদাহরণস্বরূপ সংযোজন প্লাস (a, b) = (a + b); সুতরাং ( + ) একটি ফাংশন যা দুটি আর্গুমেন্ট নেয় এবং এগুলিকে যুক্ত করে (এ + বি)।

দুর্ভাগ্যক্রমে, আমি স্ট্যাকের আকার নিয়ে সমস্যাগুলি পাই। এটি 4 টির জন্য ছোট মানগুলির জন্য কাজ করে (উদাহরণস্বরূপ: 2) বা যদি আমি এক ধাপের জন্য গভীরতা হ্রাস করি:

def h(a:B,b:B)=r(a,b,r(_,_,(_*_))) // size -7, penalty + 5
def h(a:B,b:B)=r(a,b,r(_,_,r(_,_,(_+_)))) 

মূল কোডটি 112 টি অক্ষর এবং যদি এটির মান হয় তবে এটি 107 হয় Maybe

প্রসারিত অ্যালগরিদমটি টেলরেকারসিভ কলগুলিতে রূপান্তরিত হতে পারে:

type B=BigInt
def p(a:B,b:B):B=a+b
import annotation._
@tailrec
def m(a:B,b:B,c:B=0):B=if(b>0)m(a,b-1,p(a,c))else c
@tailrec
def h(a:B,b:B,c:B=1):B=if(b>0)h(a,b-1,m(a,c))else c
@tailrec
def t(a:B,b:B,c:B=1):B=if(b>0)t(a,b-1,h(a,c))else c

মূল পদ্ধতিটি তুলনামূলক কলটি দীর্ঘতর, তবে দীর্ঘ সংস্করণে স্ট্যাকওভারফ্লো উত্থাপন করেনি - তবে এটি যুক্তিসঙ্গত সময়ের ফল দেয় না। t (2,4) ঠিক আছে, তবে t (3,3) ইতিমধ্যে 5 মিনিটের পরে আমার দ্বারা থামানো হয়েছিল। তবে এটি খুব মার্জিত, তাই না?

// 124 = 119-5 bonus
type B=BigInt
def r(a:B,b:B,c:B,f:(B,B)=>B):B=if(b>0)r(a,b-1,f(a,c),f)else c
def t(a:B,b:B)=r(a,b,1,r(_,_,1,r(_,_,0,(_+_))))

এবং এখন উপরের মত একই: দুর্গন্ধযুক্ত গুণটি ব্যবহার করুন (5 এর বোনাস প্রত্যাখ্যান করার পরেও আমরা লাভ করি, কারণ আমরা 7 টি অক্ষর সংরক্ষণ করি: win = 4 অক্ষর :)

// 115 without bonus
type B=BigInt
def r(a:B,b:B,c:B,f:(B,B)=>B):B=if(b>0)r(a,b-1,f(a,c),f)else c
def t(a:B,b:B)=r(a,b,1,r(_,_,1,(_*_)))

আবাহন:

timed ("t(4,3)")(t(4,3)) 
t(4,3): 1
scala> t(4,3)
res89: B = 13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096

রানটাইম: 1 এমএস।


4

ব্রা ** এনফাক, 128-5 = 123 বাইট

+<<+<<,<,[>[>+>>+<<<-]>[<+>-]>[>[>>+>+<<<-]>>>[<<<+>>>-]<<[>[>+>+<<-]>>[<<+>>-]<<<-]>[-]>[<<+>>-]<<<<-]>>[<<+>>-]+<[-]<<<<-]>>>.

ইনপুট অক্ষরের আকারে ইনপুট হিসাবে পছন্দসই সংখ্যার কোড পয়েন্ট সহ। আউটপুট একই।

আমার নীচের সময়টি থাকলে একটি ব্যাখ্যা আসছে । ক্ষয়ক্ষতি, গুণ বা আরও যোগ না করার জন্য আমি কী বোনাস পয়েন্ট পেয়েছি?

Cell 3 (0-indexed) is the running total x.
This calculates the nth tetration of a.

+<<+<<,<,                                       Initialize tape with [n, a, 0, 1, 0, 1]
[                                               While n:
  >[>+>>+<<<-]>[<+>-]                             Copy a 3 cells to right: [n, a, 0, x, a, 1]
  >[                                              While x:
    >[>>+>+<<<-]>>>[<<<+>>>-]                       Copy a 2 cells to right: [n, a, 0, x, a, 1, a, 0]
    <<[>[>+>+<<-]>>[<<+>>-]<<<-]                    Cell 7 = prod(cell 5, cell 6)
    >[-]>[<<+>>-]<<<<-]                             Move this value to cell 5. End while.
  >>[<<+>>-]+<[-]<<<<-]                           Update x to result of exponentiation. End while.
>>>.                                            Print the result!

এই জন্য কাজ (পরীক্ষিত) x 0, 0 x, x 1, 1 x, x 2, 2 3, এবং 2 4। আমি চেষ্টা 3 3, কিন্তু এটা (আমার জাভা বাস্তবায়ন-সম্ভবত না অনুকূল মধ্যে) শেষ হচ্ছে ছাড়া বেশ কয়েক ঘন্টা জন্য দৌড়ে (সম্পাদনা: এ @ Timwi এর EsotericIDE ।। [এটা দারুণ তরা চেষ্টা করা উচিত এটি] পাশাপাশি কোন ভাগ্য)। তত্ত্বগতভাবে, এটি নির্দিষ্ট প্রয়োগের ঘরের আকার পর্যন্ত কাজ করে।


1
"ব্রা ** এনফাক" হ্যাঁ "মস্তিষ্ক" খুব আপত্তিজনক শব্দ এক্সডি। দুঃখিত আমার দরকার ছিল
ফায়ারকিউজ

3

পাইথন, 161 - 5 (কোনও অপারেটর নেই) = 156

r=xrange
def m(x,y):
 i=0
 for n in r(y):i+=x
 return i
def e(x,y):
 i=1
 for n in r(1,y+1):i=m(i,x)
 return i
def t(x,y):
 i=1
 for n in r(y):i=e(x,i)
 return i

ডাকা:

t(2, 4)

1
পুনরাবৃত্ত সংযোজন দ্বারা গুণ করা কি সত্যিই দ্রুত মূল্যায়ন করার জন্য 4***3!?
পিটার টেলর

2
@ পিটারটেলর হ্যাঁ? এটি আমার জন্য এক সেকেন্ডেরও কম সময়ে পূর্ণ হয়
ব্লেজার

কি দারুন. সমতুল্য গল্ফস্ক্রিপ্ট সংস্করণটি আআআআজেজেস নেয়।
পিটার টেলর

যেমন আছে, আমি এটি রাতারাতি চলতে রেখেছি এবং এটি এখনও শেষ হয়নি।
পিটার টেলর

1
ছয় বছর পরে, আপনি নিজের mফাংশনটিm=lambda x,y:sum(x for _ in r(y))
জ্যাক ব্রাউনস্টেইন

3

পার্ল, 61 টি অক্ষর

এখানে একটি উদ্ভট

sub t
{
  ($x,$y,$z)=@_;
  $y>1&&t($x,$y-1,eval$x."*$x"x($z-1||1))||$z
}

ব্যবহার:

print t(2,4,1)

4
একটি
ভুলও

3

গণিত , 40 33

এটি নিয়মের সাথে পুরোপুরি মানায় না তবে এটি যেহেতু সংক্ষিপ্ততম কোডের পক্ষে যুক্তিযুক্ত নয়, এবং আমি আশা করি এটি কারও পক্ষে আগ্রহী হবে।

m@f_:=Fold[f,1,#2~Table~{#}]&;

m[m@Sum]

এটি যখন চালিত হয় তখন এটি "টেটারেশন" ফাংশন তৈরি করে তবে আর্গুমেন্টগুলি অবশ্যই বিপরীত ক্রমে দেওয়া উচিত। উদাহরণ:

m[m@Sum][3, 4]

1340780792994259709957402499820584612747936582059239337772356144372176 4030073546976801874298166903427690031858186486050853753882811946569946 433649006084096


আপনি কোড ব্যাখ্যা করবেন? অথবা সংখ্যার চেয়ে প্রতীকগুলিতে ফলাফল প্রদর্শন করবেন? আমি লক্ষ্য করি যে উদাহরণস্বরূপ Fold[g, 1, #2~Table~{#}] &[3, 4]উত্পাদন করা হবে g[g[g[1, 4], 4], 4]
ডেভিডসি

@ ডেভিড m[Times]উত্পাদন করে Fold[Times, 1, Table[#2, {#1}]] &, যা একটি পাওয়ার ফাংশন: m[Times][5, x]---> x^5; টেটারেশন ফাংশন তৈরি করতে এই নতুন পাওয়ার ফাংশনের জন্য একই পদ্ধতিটি ব্যবহৃত হয়। যৌক্তিকভাবে একটি শুরু হতে পারে Plusতবে এটি প্রায় সঙ্গে সঙ্গে ব্যর্থ হয়।
মিঃ উইজার্ড

টাইমস নিষ্কাশন করতে, এই চেষ্টা করে দেখুন: t[h_, n_] := Sum[h, {i, n}]। তারপরে দৌড়াও m[m@t][3, 4]
ডেভিডসি

@ ডেভিড, হ্যাঁ, এটি কাজ করা উচিত, তবে কোড-গল্ফের পক্ষে নয়। ;-) ( Sum[h, n]
বিটিডাব্লু

স্কোরিংয়ের নিয়মগুলি দেখুন। আপনি টাইমস ব্যবহার না করে 9 পয়েন্ট সংরক্ষণ করুন। মোট স্কোরটি এখনও আপনার চেয়ে ভাল নয় তবে কাছাকাছি আসছে।
ডেভিডসি

3

Haskell,:  58  ৫ টি অক্ষর, গুণ বা ছাড়াই।

i f x 1=x;i f x n=f$i f x$n-1
t=i(\o n->i(o n)n)(+)4

Ungolfed:

bump op n a = iterate (op n) n !! (fromIntegral $ a-1)
tetrate = iterate bump (+) !! 3

সংক্ষিপ্ত সংজ্ঞাটি "বাম্প" ইনলাইন করে এবং "পুনরাবৃত্তি" এর একটি কাস্টম সংস্করণ সংজ্ঞায়িত করে আসে। দুর্ভাগ্যক্রমে ফলাফল অসম্ভব অযোগ্য, তবে (+) এর পরিবর্তে (*) দিয়ে শুরু করা শালীন গতি দেয়। ইন ghci:

Prelude> let i f x 1=x;i f x n=f$i f x$n-1
(0.00 secs, 1564024 bytes)
Prelude> let t=i(\o n->i(o n)n)(*)3
(0.00 secs, 1076200 bytes)
Prelude> t 4 3
13407807929942597099574024998205846127479365820592393377723561443721764030073546
976801874298166903427690031858186486050853753882811946569946433649006084096
(0.01 secs, 1081720 bytes)

3

রুবি 66 59 টি অক্ষর

def e(x,y)
r=1
(1..y).each{t=x
(2..r).each{t*=x}
r=t}
r
end

দুর্ভাগ্যক্রমে, 1যখন দ্বিতীয় ইনপুট নম্বরটি থাকে তখন এই স্ক্রিপ্টটি সঠিক আউটপুট ( ) উত্পাদন করে না 0; পরিবর্তে, e(x,0)এর মান প্রদান করে x
মাঝামাঝি

@ ঠিক আছে আপনি আমি কোডটি ঠিক করে দিয়েছি। ধন্যবাদ!
ক্রিশ্চিয়ান লুপাস্কু

2

পাইথন, ১১২ টি চর

সংখ্যাগুলি 1 ম এবং 2 য় আর্গুমেন্ট হওয়া উচিত: python this.py 4 3
**অপারেটর ব্যবহার করা হয়নি।
*ব্যবহার করা হয়েছে। একেবারে মতো বাস্তবায়নের পক্ষে এটি বেশ তুচ্ছ **, তবে 5 টিরও বেশি অক্ষরের ব্যয়।

import sys
p=lambda y:y and x*p(y-1)or 1
t=lambda y:y>1 and p(t(y-1))or x
x,y=map(long,sys.argv[1:])
print t(y)

আমি 4 3 গণনা করতে কোডটি কীভাবে ব্যবহার করব? এবং, কৌতূহলের মাত্রায়: আপনি কি * সেভাবে বাস্তবায়ন করার চেষ্টা করেছিলেন এবং 4 4 গণনা করার চেষ্টা করেছিলেন?
ব্যবহারকারী অজানা

@ ব্যবহারকারীর জানা, ইনপুটটি পরামিতি দ্বারা। আমি উত্তরে একটি ব্যাখ্যা যুক্ত করেছি। আমি *বাস্তবায়নটি যুক্ত করার চেষ্টা করিনি , আমি বিশ্বাস করি যে পুনরাবৃত্তির গভীরতা খুব বেশি হবে 4 3
ugoren

2

সি, 117 105 99 অক্ষর

সম্পাদনা: দুটি ফাংশন মার্জ করে pএবংr একটিতে করা হয়েছে, কিছু অক্ষর সাশ্রয় হয়েছে।
99 টি চরিত্রের মধ্যে 52 আসল গণনা করে (পরিবর্তনশীল সংজ্ঞা সহ)। অন্যান্য 47 টি ইনপুট এবং আউটপুট পরিচালনা করার জন্য।
বাউজি: খারাপভাবে 0 (যেমন 0 2) এর শক্তি পরিচালনা করে । একটি সর্বনিম্ন ব্যয় স্থির করা উচিত। এটি কোনও ত্রুটি নয়, আমি ভুলে গেছি যে 0 2এটি সংজ্ঞায়িত।

সাফল্যের সাথে পরিচালনা করে 4 3, এবং এমনকি একটি সঠিক ফলাফল দেয়। তবে কিছু ছোট সংখ্যার জন্য ভুল হতে পারে।
একটি পেছন দিয়ে নম্বর মুদ্রণ .000000

x,y,z;
double R(){return--y?!z?y=R(),R(z=1):x*R():x;}
main(){
    scanf("%d%d",&x,&y);
    printf("%f\n",R());
}

আমার কাছে 118 টি চরিত্রের
মেল্লামোকব

4 3 দিয়ে এটি পরীক্ষা করা কেবলমাত্র 18 টি জায়গাতেই সঠিক, ডাবলটির প্রায়শই যথাযথ প্রতিনিধিত্ব সমর্থন করার মতো যথার্থতা নেই।
স্যার_লগসালোট

@ স্যার_লাগসালোট, ডাবল 4 ^ 256 এর জন্য যথেষ্ট নির্ভুলতার চেয়ে বেশি রয়েছে has এটির একটি মাত্র উল্লেখযোগ্য অঙ্ক রয়েছে।
ugoren

আহ ভাল কথা, আমি বাইনারি মধ্যে চিন্তা ছিল না। এটি কি আপনার জন্য সঠিক মূল্যটি মুদ্রণ করে? এটি আমার মেশিনে প্রথম 18 বা তত দশমিক অঙ্ক পরে কাটা হবে, তবে আমি সেই সিস্টেমটি নির্দিষ্ট করতে মেনে নিতে চাই।
স্যার_লগসালোট

@ স্যার_লাগসালোট: আমি সরবরাহ করেছি আদর্শ লিঙ্কটি দেখুন। এটি পুরো সংখ্যাটি মুদ্রণ করে।
মেল্লামোকব

2

ফ্যাক্টর, 187 অক্ষর

USING: eval io kernel locals math prettyprint sequences ;
IN: g
:: c ( y x o! -- v )
o 0 = [ x y * ] [ o 1 - o!
y x <repetition> 1 [ o c ] reduce ] if ;
contents eval( -- x y ) swap 2 c .

গল্ফের আগে:

USING: eval io kernel locals math prettyprint sequences ;
IN: script

! Calculate by opcode:
!   0 => x * y, multiplication
!   1 => x ^ y, exponentiation
!   2 => x ^^ y, tetration
:: calculate ( y x opcode! -- value )
    opcode 0 = [
        x y *
    ] [
        ! Decrement the opcode. Tetration is repeated exponentiation,
        ! and exponentiation is repeated multiplication.
        opcode 1 - opcode!

        ! Do right-associative reduction. The pattern is
        !   seq reverse 1 [ swap ^ ] reduce
        ! but a repetition equals its own reverse, and 'calculate'
        ! already swaps its inputs.
        y x <repetition> 1 [ opcode calculate ] reduce
    ] if ;

contents eval( -- x y )         ! Read input.
swap 2 calculate .              ! Calculate tetration. Print result.

আমি গুণ গুণ অপারেটর সরান নি *। যদি আমি এটি করে থাকি, তবে আমাকে কিছু যুক্তি যুক্ত করতে হবে যা প্রকাশ করে যে খালি অনুক্রমের যোগফল 0 হয় না, 1 হয় This


বিধি বিভাজনকারী, 124 + 10 = 134 টি অক্ষর

USING: eval kernel math.functions prettyprint sequences ;
contents eval( -- x y ) swap <repetition> 1 [ swap ^ ] reduce .

এই প্রোগ্রামটিতে কম স্কোর রয়েছে, তবে ক্ষতিকারক অপারেটর ^নিয়মগুলি ভঙ্গ করে। বিধিগুলি "(অক্ষরের # টি) + (10 * ('পাওয়ার' অপারেটরগুলির #))" বলে, তাই আমি +10 জরিমানা প্রয়োগ করেছি। যাইহোক, নিয়মগুলি "" পাওয়ার 'অপারেটর ব্যবহার করবেন না "এও বলে, সুতরাং এই জরিমানা গ্রহণকারী যে কোনও প্রোগ্রাম নিয়মগুলি ভঙ্গ করে। সুতরাং, ১৩৪ টি চরিত্রের এই প্রোগ্রামটি সঠিক উত্তর নয় এবং আমার উত্তর হিসাবে আমার 187 অক্ষরের দীর্ঘতর প্রোগ্রামটি উপস্থাপন করতে হবে।


2

হাস্কেল 110 - 5 = 105

টেটারেশন পেনো স্টাইল। এটি সর্বাধিক উন্মুক্ত ধীর সমাধান, কেবলমাত্র একটি সতর্কতা, তবে আরও সংযোজন এড়ানোও।

data N=Z|S N
a&+Z=a
a&+S b=S$a&+b
_&*Z=Z
a&*S b=a&+(a&*b)
_&^Z=S Z
a&^S b=a&*(a&^b)
_&>Z=S Z
a&>S b=a&^(a&>b)

এটি আপনার পেনো সংখ্যাগুলি টাইপ করার ধৈর্য ধারণ করার উপর নির্ভর করে (এবং উত্তরটি দেখায় না, আপনি যদি এটি চালাতে চান তবে এই কয়েকটি লাইন যুক্ত করুন (90 টি অক্ষর):

f 0=Z
f a=S$f$a-1
t Z=0
t(S a)=1+t a
main=interact$show.f.(\[x,y]->x&>y).map(f.read).words


2

লুয়া: ১৩৩ টি চর, গুণ-কম

a,b=io.read():match"(%d+) (%d+)"a,b,ba=a+0,b+0,a for i=1,b-1 do o=1 for i=1,a do o=o+o for i=1,ba-b do o=o+o end end a=o end print(o)

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

স্টিডিন আউটপুটগুলিতে "4 3" প্রবেশ করানো হচ্ছে:

1.3407807929943e+154

2

ভিবিএ, 90 চর

* সম্ভবত কোনও গুণনের বোনাস যথেষ্ট ভাল নয়। আমি মনে করি কোনও গুণকের উত্তরটি আরও আকর্ষণীয় নয় তবে এটি কোড গল্ফ, তাই এটি সেরা নয়। এখানে একটি উত্তর ছাড়া *এবং এটির সাথে একটি আরও ভাল (সংক্ষিপ্ত এবং আরও ভাল স্কোরিং) উত্তর:

90 টি অক্ষর, পাওয়ার অপারেটর নেই, গুণ = 90 ব্যবহার করে

Sub c(x,y)
f=IIf(y,x,1):For l=2 To y:b=x:For j=2 To f:b=b*x:Next:f=b:Next:MsgBox f
End Sub

116 অক্ষর, পাওয়ার অপারেটর নেই, কোনও গুণ বোনাস (-5) = 111

Sub c(x,y)
f=IIf(y,x,1):For l=2 To y:b=x:For j=2 To f:For i=1 To x:a=a+b:Next:b=a:a=0:Next:f=b:Next:MsgBox f
End Sub

দ্রষ্টব্য: ফলাফল খুব বড় হলে (যেমন 4, 3) সংখ্যাটি মুদ্রণের ক্ষেত্রে ভিবিএর সমস্যা রয়েছে তবে এটি সঠিকভাবে গণনা করে, সুতরাং, উদাহরণস্বরূপ, আপনি যদি সেই নম্বরটি ব্যবহার করতে চেয়েছিলেন তবে আপনি যেতে ভাল would এছাড়াও, এমনকি বড় সংখ্যাগুলি ওভারফ্লো (যেমন 3, 4)।


2

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

->\a,\b{(1,{[*] a xx$_}...*)[b]}

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

(1, { [*] a xx $_ } ... *) একটি অলস ক্রম যা পাওয়ার টাওয়ার উত্পন্ন করে, প্রতিটি উপাদান এমন একটি তালিকা যা প্রথম ইনপুট প্যারামিটার নিয়ে গঠিত a প্রতিলিপি করা হয় ( xx) পূর্ববর্তী উপাদান ( $_) এর সমান সংখ্যক বার , সেই তালিকাটি তখন গুণন ( [*]) দিয়ে হ্রাস করা হয় । এই ক্রমটি থেকে আমরা সহজ- bতম উপাদানটি বের করে আছি ।


2

লাম্বদা ক্যালকুলাস, 10-5

( চার্চ এনকোডিং ব্যবহার করে এবং ডি ব্রুইজন অভ্যাস )
λλ(1λ13)λ1

ব্যাখ্যা

ডি ব্রুইজন অশ্লীলতা ছাড়াই: λa,b.(b λc.ca)λc.c ::

λa,b.                                                 define the anonymous function f(a,b)=
     (b                                                apply the following function b times
        λc.                                                    the anonymous function g(c)=
           ca)                 apply c to a because of church encoding this is equal to a^c
              λc.c                              the identity function, 1 in church encoding

আপনি যদি সংজ্ঞা দিন exp_a(x)=a^x এই প্রোগ্রামটি সংজ্ঞায়িত করেন তবে ফাংশন ইন্টিগ্রেশনকে a↑↑b=exp_a^b(1)কোথা থেকে ^bচিহ্নিত করে।

আমি নিশ্চিত না যে এটি অনুমোদিত কিনা কারণ caপ্রযুক্তিগত দিক থেকে a^cএটি কখনই বাস্তব অন্তর্নির্মিত না এবং ল্যাম্বদা ক্যালকুলাসে পূর্ণসংখ্যার এনকোড করা যায় কেবল তার একটি পার্শ্ব প্রতিক্রিয়া equivalent


এইচএম, এমন কোন দোভাষী আছে যাতে আমি এটি চেষ্টা করতে পারি? যদি কোনও ভাষার বাস্তবায়ন না হয় তবে আপনি এখানে চ্যালেঞ্জগুলি সমাধান করতে এটি ব্যবহার করতে পারবেন না। ভাষাগুলি এখানে তাদের প্রয়োগের উপর ভিত্তি করে।
এরিক আউটগল্ফার

1

জাভাস্ক্রিপ্ট: 116 অক্ষর

function t(i){y=i.split(' ');a=y[0];b=y[1];return+b&&p(a,t(a+' '+(b-1)))||1}function p(a,b){return+b&&a*p(a,b-1)||1}

টি ('4 3') ফলাফল:

1.3407807929942597e+154

1

পাইথন (111) (113) নম্বর *

r=lambda x,y:(x for _ in range(y));t=lambda x,y:reduce(lambda y,x:reduce(lambda x,y:sum(r(x,y)),r(x,y)),r(x,y),1)

6 *** 3 - 36 কে অঙ্ক))

আপডেট: প্রাথমিক মান যোগ করতে হবে, টি (এক্স, 0) = 1 ফিট করতে


চিত্তাকর্ষক, 36k কত সময় নিয়েছে?
মিঃজান্ডার

1
মুদ্রণ সহ 9.375 সেকেন্ড
ইভ_জেনাস

1

হাস্কেল: ৮৫-৫০ অক্ষর ব্যয় ছাড়াই, ৫৯ টি গুণফল রয়েছে

গুণ ছাড়া:

h x y=foldr(\x y->foldl(\x y->foldl(+)0(replicate x y))1(replicate y x))1(replicate y x)

কিছু উপায় আছে যে আমি কিছুটা গল্ফ করতে পারি।

গুণ সহ:

h x y=foldr(\x y->foldl(*)1(replicate y x))1(replicate y x)

এবং অবশেষে, অসম্পূর্ণ প্রোগ্রাম:

mult x y = foldl (+) 0 (replicate x y)
expo x y = foldl (mult) 1 (replicate y x)
h x y = foldr (expo) 1 (replicate y x)

এই সমস্যাটি করার সম্ভবত এটিই সহজতম উপায় যা গুণকে বারবার সংযোজন হিসাবে ব্যাখ্যা করা হয়, পুনরাবৃত্তিটিকে পুনরাবৃত্তি হিসাবে এবং ক্ষুদ্রায়ণকে পুনরাবৃত্তি হিসাবে চিহ্নিত করা হয়।



1

কমন লিস্প, 85 টি অক্ষর

(lambda(b c)(let((r b)u)(dotimes(c c r)(setf u 1 r(dotimes(c b u)(setf u(* u r)))))))

আমি বারবার সংযোজনের মাধ্যমে গুণগুলি করার চেষ্টা করেছি, তবে এটি ছিল 5 টিরও বেশি চরিত্র। ম্যাক্রোলেটগুলির সাথে একই জিনিস, ঘোষণাগুলি লাভের পক্ষে নয়।

বুথবাইয়ের অজগর সমাধান দ্বারা অনুপ্রাণিত আরেকটি সমাধান। এটি উপরের সমাধানটির চেয়ে 1 টি অক্ষর কম।

(lambda(a b)(eval`(*,@(loop for x below b nconc(loop for x below a nconc`(,a,a))))))

1

পাইথন 3 - 68

(পাওয়ার অপারেটরের জন্য 10-পয়েন্ট জরিমানা সহ)

a,b=input().split()
r=1
exec("r=%s**r;"%a*int(b))
print(r)


1

আর , 71 - 5 = 66 বাইট

function(x,y,b=x){for(i in 2:y)b=cumprod(z<-rep(x,b))[sum(z|1)];cat(b)}

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

-5 এড়ানোর জন্য যা আমার প্রত্যাশার চেয়েও শক্ত ছিল। এটি সত্যই দ্রুত বিস্ফোরিত হয় এবং কাজ করবে না (যদি এর বেশি স্মৃতি না থাকে) তবে এটি সমস্ত প্রয়োজনীয় মানদণ্ডকে সন্তুষ্ট করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.