কোড-গল্ফ: ফ্যারি সিকোয়েন্স (আই)


10

চ্যালেঞ্জ

এই টাস্কে আপনাকে একটি পূর্ণসংখ্যা এন দেওয়া হবে (10 ^ 5 এর কম), অর্ডার এন এর ফ্রেই ক্রমটি আউটপুট করুন

ইনপুট এনটি একটি একক লাইনে দেওয়া হয়, ইনপুটগুলি ইওএফ দ্বারা সমাপ্ত হয়।

ইনপুট

4
3
1
2

আউটপুট

F4 = {0/1, 1/4, 1/3, 1/2, 2/3, 3/4, 1/1}
F3 = {0/1, 1/3, 1/2, 2/3, 1/1}
F1 = {0/1, 1/1}
F2 = {0/1, 1/2, 1/1}

সীমাবদ্ধতাসমূহ

  • ইনপুট সংখ্যা 10 ^ 6 মান অতিক্রম করবে না
  • আপনি আপনার পছন্দের যে কোনও ভাষা ব্যবহার করতে পারেন
  • সবচেয়ে কম সমাধানে জয়!

এটি লুঙ্গ হবে ..... আউটপুট মানে mean
st0le

এন = 0 অনুমোদিত?
এলেভেক্স

4
শিরোনামে »(আমি) with এর সাথে কী আছে?
জোয়ি

2
@ জোয়ি: হুম। এখন একটি ফারি সিকোয়েন্স (দ্বিতীয়) আছে। প্রথম সংস্করণ হতে হবে! :-)
মেল্লামব্যাক

1
@ মেল্লামোকব: আচ্ছা, এটি একটি কোড চ্যালেঞ্জ, যদিও কোনও ক্ষেত্রেই শিরোনামের সংঘাত নেই। তবে হ্যাঁ, এই প্রশ্নটি আমার প্রশ্নের উত্তর দেয়।
জোয়

উত্তর:


5

জে, 96

('F',],' = {0/1',', 1/1}',~('r';'/')rplc~', ',"1":"0@(3 :'}./:~~.,(%~}:\)i.1x+y')&".);._2(1!:1)3

( /:~~.,(%~}:\)i.>:x:yতালিকাটি দেয়; বাকিটি আমি / ও এবং ফর্ম্যাটিং (খারাপ শৈলীতে))

উদাহরণ:

4
3
1
2
F4 = {0/1, 1/4, 1/3, 1/2, 2/3, 3/4, 1/1}
F3 = {0/1, 1/3, 1/2, 2/3, 1/1}          
F1 = {0/1, 1/1}                         
F2 = {0/1, 1/2, 1/1}  

সম্পাদনাগুলি

  • (114 → 106) ক্লিয়ারার সংযোজন,
  • (106 → 105) ক্যাপ [:টু এট@
  • (105 → 101) অতিরিক্ত অতিরিক্ত ":রূপান্তর মুছুন
  • (101 → 99)\ তালিকার জন্য ইনফিক্স ব্যবহার করুন
  • (99 → 96)

আমি পেতে |value error: rplc। আপনি কি নিশ্চিত যে আপনি load 'strings'এই অধিবেশনটির আগে করেন নি এবং এটি ভুলে গেছেন?
জেসি মিলিকান

1
@ জেসি: একেবারে আমি (প্রায়) কখনই ব্যবহার করি না 'strings'। আমি কেবল ডিফল্ট লিনাক্স-জে -7.01 পরিবেশ ব্যবহার করি।
এভেলেক্স

উঃ ... আমি j602 এ পরিবর্তন করেছি wdএবং এখন আমার আবার ফিরে যেতে হবে switch :)
জেসি মিলিকান

3

কমন লিস্প, 156

(do((l()()))((not(set'n(read()()))))(dotimes(j n)(dotimes(i(1+ j))(push(/(1+ i
)(1+ j))l)))(format t"~&F~D = {0/1~{, ~A~}/1}"n(sort(delete-duplicates l)'<)))

(নতুন লাইনের প্রয়োজন নেই)

অত্যন্ত নিষ্ঠুর, তবে দেশীয় যুক্তিযুক্ত ভাষাগুলি এটির জন্য একটি আমন্ত্রণ।

মন্তব্যে অসম্পূর্ণ:

                                        ; at each iteration:
(do ((l()()))                           ; - reset l to nil
    ((not (set 'n (read()()))))         ; - read a term (nil for eof)
                                        ;   assign it to n
                                        ;   stop looping if nil
  (dotimes (j n)                        ; for j in 0..n-1
    (dotimes (i (1+ j))                 ;   for i in 0..j
      (push (/ (1+ i) (1+ j)) l)))      ;     prepend i+1/j+1 to l
  (format t "~&F~D = {0/1~{, ~A~}/1}"   ; on a new line, including 0/1,
                                        ; forcing the format for 1
          n                             ; print sequence index, and
          (sort                         ; sorted sequence of
           (delete-duplicates l)        ;   unique fractions
           '<)))                        ; (in ascending order)

3

পাইথন, 186 চারস

import sys
p=sys.stdout.write
while 1:
 a=0;b=c=x=1;d=y=N=input();p("F%d = {%d/%d, %d/%d"%(d,a,b,c,d))
 while y-1:x=(b+N)/d*c-a;y=(b+N)/d*d-b;p(", %d/%d"%(x,y));a=c;c=x;b=d;d=y
 p("}\n")

+ 1, তবে আপনি কি নিশ্চিত যে এটি 10 ​​^ 6 ইনপুট সংখ্যার জন্য দ্রুত হবে?
কুইসোটিক

@ দেবানজান নং। এটি 10 ​​^ 6 ইনপুটগুলির জন্য সত্যিই ধীর হবে। যদিও জটিলতায় এটি লিনিয়ার (শর্তাবলীর সংখ্যা অনুসারে), যদিও।
fR0DDY

2

জে, 156 135 117 112

d=:3 :0
wd;'F';(":y);' = {';(}.,(', ';2|.'/';|.)"1(<@":)"0(2)x:/:~~.,(-.@>*%)"0/~i.x:>:y),<'}'
)
d@".;._2(1!:1)3

j602 বা অনুরূপ ( wd)। স্টিডিনে ইনপুট, স্টডআউটে আউটপুট।

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

সম্পাদনা করুন: (156-> 135) সারণী-> দীর্ঘ monadic ক্রিয়া শৃঙ্খলার জন্য সুস্পষ্ট, কম ব্রেন্ডেড তালিকা জেনারেশন

সম্পাদনা করুন: (135-> 117) রাজে পাওয়া গেছে । আমাকে অনেকক্ষণ ধরে নিয়ে গেছে চারপাশে স্যুইচিং স্ট্রিং।

সম্পাদনা করুন: (১১7-> ১১২) উপরে ভগ্নাংশগুলি বাদ দেওয়ার জন্য সামান্য কম ব্রিনেড উপায় 1.. অপ্রয়োজনীয় উন্মুক্ত।


আপনি আপনার দুটি x:গুলি একটি বাদ দিতে পারেন ?
ইভেলেক্স

@ ইলেভেক্স: বাম দিকটি 2 এবং x:, উদাহরণস্বরূপ একটি যুক্তিযুক্ত সংখ্যাটিকে অংকের এবং ডিনোমিনেটরে বিভক্ত করুন।
জেসি মিলিকান

ওআইসি। করুণা ... :(
এলেভেক্স

2

গল্ফস্ক্রিপ্ট (101)

~:c[,{){.}c(*}%.c/zip{+}*]zip{~{.@\%.}do;1=},{~<},{~\10c?*\/}${'/'*}%', '*'F'c`+' = {0/1, '+\', 1/1}'

2

রুবি, 110 108 102 97 94 92 91 89

#!ruby -lp
$_="F#$_ = {#{a=[];1.upto(eval$_){|d|a|=(0..d).map{|n|n.quo d}};a.sort*', '}}"

আমি মনে করি আপনার যথাক্রমে "0" এবং "1" এর পরিবর্তে "0/1" এবং "1/1" আউটপুট করা উচিত। এছাড়াও, এটি কেবল রুবি ১.৯ এর জন্য কাজ করে?
ইভেলেক্স

1
@ ইয়েলভেক্স: এটি আমার সিস্টেমে 0/1 এবং 1/1 আউটপুট দেয়। এবং হ্যাঁ, এর প্রয়োজন 1.9 (চরিত্রের অক্ষরের কারণে)।
লোজ্যাকার

1

হাস্কেল, 148

f n="F"++show n++" = {"++(intercalate", ".("0/1":).map(\(i:%d)->show i++"/"++show d).sort.nub$[i%d|d<-[1..n],i<-[1..d-1]])++"}"
main=interact$f.read
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.