এটি কোন দিন (ফ্লুপটোনিয়ায়)?


34

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

এখানে 208 দিনের দীর্ঘ ফ্লুপ্টোনিয়ান ক্যালেন্ডার রয়েছে:

Month       Days    Input Range
Qupu        22      [0-22)
Blinkorp    17      [22-39)
Paas        24      [39-63)
Karpasus    17      [63-80)
Floopdoor   1       [80]
Dumaflop    28      [81-109)
Lindilo     32      [109-141)
Fwup        67      [141-208)

চ্যালেঞ্জ

আপনার প্রোগ্রামটি, বছরের (পরিসীমা [0-208)) একটি পূর্ণসংখ্যার দিন দেওয়া হয় মাসের সাথে সম্পর্কিত দিন এবং মাসের নাম আউটপুট করা (যেমন 13 Dumaflop)।

তবে একটি ব্যতিক্রম আছে: ফ্লুডডোরটি ফ্লুফটোনীয়দের জন্য একটি বিশেষ সময় যা স্পষ্টতই নিজস্ব ক্যালেন্ডারের পৃষ্ঠাটির জন্য প্রাপ্য। যে কারণে, ফ্লুপডোর একটি দিন নিয়ে লেখা হয় না (যেমন আউটপুটটি হয় Floopdoor, না 1 Floopdoor)।

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

0   => 1 Qupu
32  => 11 Blinkorp
62  => 24 Paas
77  => 15 Karpasus
80  => Floopdoor
99  => 19 Dumaflop
128 => 20 Lindilo
207 => 67 Fwup

বিধি

  • আপনাকে অবশ্যই একটি সম্পূর্ণ প্রোগ্রাম লিখতে হবে।
  • আপনি ধরে নিতে পারেন যে ইনপুটটি সর্বদা বৈধ।
  • আপনার আউটপুটে একটি পেছনের নিউলাইন থাকতে পারে তবে অন্য কোনও অতিরিক্ত অক্ষর মুক্ত থাকতে হবে। কেসটি প্রদত্ত উদাহরণগুলির সাথেও মেলে।
  • আপনি তারিখ / সময় ফাংশন ব্যবহার করতে পারেন।
  • কোডের দৈর্ঘ্য বাইটে পরিমাপ করতে হয়।

2
এটি "ফ্লুপডো আর" বা "ফ্লপডোর"? প্রথম চার্টটিতে অতিরিক্ত রয়েছে o, তবে নামের অন্যান্য উদাহরণগুলি তা দেয় না।
jwodder

4
সুতরাং ... 47k বছরে, কিছুই পরিবর্তন হবে না?
চার্লস

2
@ নোটহাট চার্লস এছাড়াও, যদি গ্রহটি খুব দূরে থাকে তবে আপনি এটি প্রথম স্থানে নেওয়ার সময়টি কি পুরানো হবে না?
সুপারজেডি ২২৪

3
যেন গ্রেগরিয়ান ক্যালেন্ডার যথেষ্ট খারাপ ছিল না।
আর্টুরো টরেস সানচেজ

3
@ আর্টুরুটোরেস সানচেজ ভালমতো কমপক্ষে কোনও লিপ বছর নেই। কিন্তু ফ্লোপটোনিয়া সম্পর্কে অন্য কোনও গল্প আছে, বা পুরো সেটিংসটি কেবল এই নির্দিষ্ট ধাঁধাটির জন্যই তৈরি হয়েছিল? শীতের জন্য কি Fwup তাদের শব্দ? বা আমি কি কেবল আমার লেজকে ওয়ার্ল্ড বিল্ডিংয়ে ফিরিয়ে আনব?
দামিয়ান ইয়ারিক

উত্তর:


14

পাইথ - 105 103 90 88 বাইট

বেস রূপান্তর ব্যবহার করে। দুটি সাধারণ সন্ধানের টেবিল, নামের সাথে একটি এবং শুরুর তারিখগুলির জন্য এবং ফ্লোপডোরের শেষে একটি ত্রৈমাসিক।

KhfgQhTC,aCM"mQP?'"Zcs@LGjC"îºBüÏl}W\"p%åtml-¢pTÇÉ(°±`"23\c+?nQ80+-hQhKdkreK3

স্ট্রিংটি বেস 128 হিসাবে নয়, তবে বেস 23 হিসাবে সংকুচিত করে First প্রথমত, এটি এটি বর্ণমালার সূচকে অনুবাদ করে। এর জন্য বিভাজক হওয়া দরকার cযা মাসের কোনও নামতে প্রকাশিত হয় না। তারপরে এটি এনকোড করে যে একটি বেস 23 নম্বর থেকে দশটিকে বেস করতে (সর্বাধিক মানটি উপস্থিত হয়েছিল w), তারপরে 256 বেসে রূপান্তর করে।

শুরুর তারিখগুলি হ'ল তাদের ইউনিকোড কোডপয়েন্টস, কোনও বেস রূপান্তর নয়।

K                       K =
 hf                     First that matches the filter
  gQ                    >= Q
   hT                   First element of filter var
  C,                    Zip two sequences
   a       Z            Append 0 (I could save a byte here but don't want to mess with null bytes)
    CM"..."             Map the string to its codepoints
   c          \c        Split by "c"
    s                   Sum by string concatenation
     @LG                Map to location in alphabet
      j     23          Base 10 -> Base 23
      C"..."            Base 256 -> Base 10
+                       String concatenation
 ?nQ80                  Ternary if input != 80
  +-hQhK                Input - start date + 1
  k                     Else empty string
 r  3                   Capitalize first letter
  eK                    Of month name

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

টেস্ট স্যুট


আমি পাইথের কাছে খুব নতুন, তুমি কি তা ভেঙে ফেলতে পার? আমি খুব কৃতজ্ঞ হতে হবে।
উইনি

1
@ উইনি আমি করব, প্রথমে সুস্পষ্ট গল্ফগুলি শেষ করতে চেয়েছি। সমস্ত অদ্ভুত চিহ্নগুলি হ'ল কারণ আমি স্থানটি বাঁচাতে বেস 26 টি প্রতীক (বর্ণমালা) বেস 256 কে সংকুচিত করেছি।
মালটিসেন

1
@ উইনি কি যথেষ্ট? আমাকে এখানে ping থেকে / নির্দ্বিধায় চ্যাটে যদি আপনার কোন প্রশ্ন থাকে।
মালটিসেন

19

পাইথন 3, 159 156 152 151 150 148 বাইট

n=int(input())+1
for c,x in zip(b" C","Qupu Blinkorp Paas Karpasus Floopdoor Dumaflop Lindilo Fwup".split()):c>=n>0and print(*[n,x][-c:]);n-=c

এতে থাকা বাইটস অবজেক্টে zipঅপ্রিন্টযোগ্য অক্ষর রয়েছে:

for c,x in zip(b"\x16\x11\x18\x11\x01\x1c C", ...): ...

( for/zip-৩ বাইটের জন্য একটি লুপ প্রস্তাব দেওয়ার জন্য @ এক্সনোরকে ধন্যবাদ )


11
সেই মুহুর্তে যখন পাইথনের উত্তর --- <s> ঘাড়ে ঘাড়ে </ s> --- একটি পাইথ উত্তর মারছে
অপ্টিমাইজার

1
বায়স্ট্রিংয়ের ব্যবহার বুদ্ধিমান!
উইনি

আমি মনে করি যে এরকম কিছু সহ কিছুটা না করে bসরাসরি পুনরুক্তি করা উচিত । forfor c in b"...":i+=n>0;n-=c
xnor

1
ওহ, অপেক্ষা করুন, nখুব কম যাওয়া বন্ধ করার জন্য আপনার সঠিক মান দরকার need এখনও এর মতো কিছু দিয়ে সম্ভব হওয়া উচিত x=n>c;n-=c*x;i+=xতবে এটির পক্ষে মূল্যবান কিনা তা জানেন না।
xnor

13

ডায়েট 2125 বাইট

এটি কোনওভাবেই সংক্ষিপ্ততম নয়, তবে এটি সুন্দর এবং বর্ণময় ...

প্রতিটি পিক্সেল নিজে হাতে রেখেছি। এটি চালানোর জন্য এখানে ফায়ারফক্সে যান (ক্রোম কাজ করবে না) এবং এটির 1 টি কোডেলের প্রস্থ দিয়ে লোড করুন (এটি কালো প্রদর্শিত হবে, উদ্বেগ করবেন না), নম্বরটি প্রবেশ করুন এবং রান বোতামটি টিপুন!

ছোট প্রোগ্রাম: ছোট সংস্করণ


বড় করা (10 এর কোডেল প্রস্থ): এখানে চিত্র বর্ণনা লিখুন


dead chexবাইট গণনায় যোগ করবেন না ?
বিটা ক্ষয়

1
@ বেটা ন্যায়সঙ্গত হওয়ার জন্য বাই গণনাটি আসলে ডিস্কের ছোট চিত্রের আকার, তাই বাইট গণনাটি নির্ধারিত
ছাড়াই

12

পাইথ 178 156 153 147 বাইট

J?<Q22,_1"Qupu"?<Q39,21"Blinkorp"?<Q63,38"Paas"?<Q80,62"Karpasus"?<Q81,k"Floopdoor"?<Q109,80"Dumaflop"?<Q141,108"Lindilo",140"Fwup"?nhJkjd,-QhJeJeJ

মাহবুব

দ্বিতীয় গল্ফ, যে কোনও পাইথ প্রতিক্রিয়া খুব সহায়ক হবে।

ব্যাখ্যা

J                       (Auto)Assign J a tuple of the first day & month name
 ?<Q22,_1"Qupu"         Recall that Q auto-initialized to raw_input()
 ?<Q39,21"Blinkorp"     ? is ternary
 ?<Q63,38"Paas"         , is a two-pair tuple
 ?<Q80,62"Karpasus"
 ?<Q81,k"Floopdoor"     Special case handled by empty string as first day
 ?<Q109,80"Dumaflop"
 ?<Q141,108"Lindilo"
 ,140"Fwup"             Since input assumed valid, no need to test for Fwup
?nhJk                   Is day not an empty string?
jd,                     join on space
   -QhJ                 Q-(first day or -1 on first month) + 1
   eJ                   The month itself
eJ                      Else print only the month name on Floopdoor

J=...পুরোটি তিনটি অবস্থাতে রাখার জন্য আপনার ইনলাইন অ্যাসাইনমেন্টটি ব্যবহার করতে সক্ষম হওয়া উচিত ।
মালটিসেন

7

সিজেম, 98 96 93 বাইট

0000000: 72 69 63 22 00 16 27 3f 50 51 6d 8d d0 22 66 2d  ric"..'?PQm.."f-
0000010: 5f 7b 30 3c 7d 23 28 5f 40 3d 29 53 40 22 06 32  _{0<}#(_@=)S@".2
0000020: 88 b2 ce d2 87 2f 1e 79 62 1b 7a 11 53 a6 cc 02  ...../.yb.z.S...
0000030: 40 c5 c6 82 d0 dd b7 4b ed ee 1c dc 4f f5 ec 67  @......K....O..g
0000040: 22 32 35 35 62 32 33 62 27 61 66 2b 27 63 2f 3d  "255b23b'af+'c/=
0000050: 5f 2c 39 3d 7b 5c 3f 7d 26 28 65 75 5c           _,9={\?}&(eu\

উপরেরটি একটি বিপরীতমুখী হেক্সডাম্প, যেহেতু উত্স কোডটিতে অরক্ষিত অক্ষর রয়েছে।

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

এক বাইটের ব্যয়ে, আমরা ইনপুটটিতে 1 এবং প্রথম স্ট্রিংয়ের প্রতিটি কোড পয়েন্টে 1 যোগ করে এটি ঠিক করতে পারি। আপনি সিজেএম ইন্টারপ্রেটারে এই সংস্করণটি চেষ্টা করতে পারেন ।

যদি পারমালিঙ্ক আপনার ব্রাউজারে কাজ না করে, আপনি এই পেস্ট থেকে কোডটি অনুলিপি করতে পারেন ।

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

$ LANG=en_US
$ xxd -ps -r > flooptonia.cjam <<< 726963220016273f50516d8dd022662d5f7b303c7d23285f403d29534022063288b2ced2872f1e79621b7a1153a6cc0240c5c682d0ddb74bedee1cdc4ff5ec6722323535623233622761662b27632f3d5f2c393d7b5c3f7d262865755c
$ wc -c flooptonia.cjam 
96 flooptonia.cjam
$ for d in 0 32 62 77 80 99 128 207; do cjam flooptonia.cjam <<< $d; echo; done
1 Qupu
11 Blinkorp
24 Paas
15 Karpasus
Floopdoor
19 Dumaflop
20 Lindilo
67 Fwup

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

ric     e# Read a Long from STDIN and cast to Character.
"…"     e# Push the string that corresponds to [0 22 39 63 80 81 109 141 208].
f-      e# Subtract each character from the input char.
        e# Character Character - -> Long
_{0<}#  e# Find the index of the first negative integer.
(_      e# Subtract 1 from the index and push a copy.
@=)     e# Select the last non-negative integer from the array and add 1.
S@      e# Push a space and rotate the decremented index on top of it.
"…"     e# Push a string that encodes the months' names.
255b23b e# Convert from base 255 to 23.
'af+    e# Add the resulting digits to the character 'a'.
'c/     e# Split at occurrences of 'c' (used as separator).
=       e# Select the chunk that corresponds to the index.
_,9=    e# Check if its length is 9 (Floopdoor).
{\?}&   e# If so, swap and execute ternary if.
        e# Since the string " " is truthy, S Month Day ? -> Month.
(eu\    e# Shift out the first char, convert it to uppercase and swap.

5

এসডাব্লুআই-প্রোলগ, 237 232 213 বাইট

a(X):-L=[22:"Qupu",39:"Blinkorp",63:"Paas",80:"Karpasus",81:"Floopdoor",109:"Dumaflop",141:"Lindilo",208:"Fwup"],nth1(I,L,A:B),X<A,J is I-1,(nth1(J,L,Z:_),Y=X-Z;Y=X),R is Y+1,(X=80,write(B);writef("%w %w",[R,B])).

এখানে আমরা Prolog এর backtracking না প্রক্রিয়া ব্যবহার বারবার আবেদন করতে nth1/3লিস্টে Lপ্রথম উপাদান পেতে LastDay+1:MonthNameএর L, যার জন্য X < LastDay+1ঝুলিতে। তারপরে আমরা মাসের দিনটি মূল্যায়নের জন্য তালিকার এইটির আগেই মাসের সন্ধান করি।


5

প্রশ্ন, 134 146 বাইট

দ্বিতীয় কাটা - প্রোগ্রাম (146 বাইট)

v:bin[l:0 22 39 63 80 81 109 141 208;x:(*)"I"$.z.x];1(,/)($)$[v=4;`;(1+x-l v)," "],`Qupu`Blinkorp`Paas`Karpasus`Floopdoor`Dumaflop`Lindilo`Fwup v;

প্রথম কাটা - ফাংশন (134 বাইট)

{v:bin[l:0 22 39 63 80 81 109 141 208;x];(,/)($)$[v=4;`;(1+x-l v)," "],`Qupu`Blinkorp`Paas`Karpasus`Floopdoor`Dumaflop`Lindilo`Fwup v}

পরীক্ষামূলক

q){v:bin[l:0 22 39 63 80 81 109 141 208;x];(,/)($)$[v=4;`;(1+x-l v)," "],`Qupu`Blinkorp`Paas`Karpasus`Floopdoor`Dumaflop`Lindilo`Fwup v} each 0 32 62 77 80 99 128 207
"1 Qupu"
"11 Blinkorp"
"24 Paas"
"15 Karpasus"
"Floopdoor"
"19 Dumaflop"
"20 Lindilo"
"67 Fwup"

আপনি সঠিক - আমি একটি সম্পাদনার পরিবর্তে এটি একটি সম্পূর্ণ প্রোগ্রাম তৈরি করার জন্য উত্তরটি সম্পাদনা করেছি এবং যাতে এটি প্রশ্নের বিধি অনুসারে
ডাব্লু

4

জুলিয়া, 231 216 184 175 বাইট

r=readline()|>int
l=[141,109,81,80,63,39,22,0]
m=split("Qupu Blinkorp Paas Karpasus Floopdoor Dumaflop Lindilo Fwup")
i=findfirst(j->r>=j,l)
print(i==4?"":r-l[i]+1," ",m[9-i])

এটি এসটিডিআইএন থেকে একটি লাইন পড়ে এবং এটি একটি পূর্ণসংখ্যায় রূপান্তর করে, মাসের শুরু দিনগুলির বিপরীত তালিকার প্রথম উপাদানটি খুঁজে পায় যেখানে ইনপুট শুরুর চেয়ে বড় বা সমান হয়, তারপরে সেই অনুযায়ী মুদ্রণ করে।


3

সুইফট 1.2, 256 বাইট

var d=Process.arguments[1].toInt()!,f="Floopdoor",n=[("Qupu",22),("Blinkorp",17),("Paas",24),("Karpasus",17),(f,1),("Dumaflop",28),("Lindilo",32),("Fwup",67)]
for i in 0..<n.count{let m=n[i]
if d>=m.1{d-=m.1}else{println((m.0==f ?"":"\(d+1) ")+m.0)
break}}

চালানোর জন্য কোনও .swiftফাইলকে কোডটি একা রাখা এবং এটি ব্যবহার করে চালানোswift <filename> <inputNumber>


3

জাভা, 357 339 বাইট

এটি সবচেয়ে দক্ষ নয়, তবে এটি কীভাবে কাজ করে তা আমি পছন্দ করি। এটি পুরো ফ্লোপটনিয়া ক্যালেন্ডার তৈরি করে এবং তারপরে সংখ্যাটি কত তারিখের তা সন্ধান করে।

class X{public static void main(String[]q){String n[]={"Qupu","Blinkorp","Paas","Karpasus","Floopdoor","Dumaflop","Lindilo","Fwup"},l[]=new String[209];int m=0,d=0,i,b[]={0,22,39,63,80,81,109,141,208};for(i=0;i++<208;d++){l[i]=(m==4?"":d+" ")+n[m];if(i>b[m+1]){m++;d=0;}}System.out.print(l[new java.util.Scanner(System.in).nextInt()+2]);}}

ইনপুট আউটপুট:

77 --> 15 Karpasus 80 --> Floopdoor

ব্যবধানযুক্ত এবং ট্যাবড আউট:

class X {
    public static void main(String[] q) {
        String n[] = { "Qupu", "Blinkorp", "Paas", "Karpasus", "Floopdoor", "Dumaflop", "Lindilo", "Fwup" },
          l[]=new String[209];
        int m = 0,
          d = 0,
          i,
          b[] = { 0, 22, 39, 63, 80, 81, 109, 141, 208 };
        for(i = 0; i++ < 208; d++) {
            l[i]=(m == 4 ? "" : d + " ") + n[m];
            if(i > b[m+1]){
                m++;
                d = 0;
            }
        }
        System.out.print(l[ new java.util.Scanner(System.in).nextInt() + 2 ]);
    }
}

1
আমি আপনাকে চ্যালেঞ্জ! আমার উত্তর দেখুন! =)
লুইজি কর্টিজ

3

জাভা, 275 269 266 257 256 252 246 244 243 বাইট

class X{public static void main(String[]w){int x=new Short(w[0]),i=1,a[]={-1,21,38,62,79,80,108,140,207};w="Qupu,Blinkorp,Paas,Karpasus,Floopdoor,Dumaflop,Lindilo,Fwup".split(",");while(x>a[i++]);System.out.print((i==6?"":x-a[i-=2]+" ")+w[i]);}}

বিন্যাসকৃত:

class X {
    public static void main(String[] w) {
        int x = new Short(w[0]), 
            i = 1, 
            a[] = { -1, 21, 38, 62, 79, 80, 108, 140, 207 };
            w = "Qupu,Blinkorp,Paas,Karpasus,,Dumaflop,Lindilo,Fwup".split(",");
        while (x > a[i++]);
        System.out.print(i == 6 ? "Floopdoor" : x - a[i-=2] + " " + w[i]);
    }
}

মজার বিষয় হল এটি এর চেয়ে কয়েক বাইট কম

class X {
    public static void main(String[] w) {
        int x = new Short(w[0]);
        System.out.print(x < 22 ? x + 1 + " Qupu" : x < 39 ? x - 21
                + " Blinkorp" : x < 63 ? x - 38 + " Paas" : x < 80 ? x - 62
                + " Karpasus" : x < 81 ? "Floopdoor" : x < 109 ? x - 80
                + " Dumaflop" : x < 141 ? x - 108 + " Lindilo" : x < 208 ? x
                - 140 + " Fwup" : "");
    }
}

ভাল খেলেছে লুইজি!
25:15

1
"Integer.valueOf (w [0])" এর পরিবর্তে "নতুন শর্ট (w [0])" দিয়ে 6 বাইট সংরক্ষণ করুন Save
অলিভিয়া ট্রুইন

@ অ্যান্ড্রুট্রেইন দুর্দান্ত টিপস, আপনাকে ধন্যবাদ!
লুইজি কর্টিজ

3

ES6 171 164 163 বাইট ব্যবহার করে জাভাস্ক্রিপ্ট

আমি সেরা জাভাস্ক্রিপ্ট প্রোগ্রামার নই তবে আমি যথাসাধ্য চেষ্টা করেছি এবং নিম্নলিখিত কোডটি দিয়ে শেষ করেছি

f=(n)=>[0,22,39,63,80,81,109,141,208].some((e,j,a)=>n<a[j+1]&&(r=(j-4?n-e+1+' ':'')+"Qupu0Blinkorp0Paas0Karpasus0Floopdoor0Dumaflop0Lindilo0Fwup".split(0)[j]))&&r;

ফলাফলটি দেখতে আপনাকে এইচটিএমএল ফাইলে উপরের কোডটি উল্লেখ করতে হবে এবং নীচের কোডের অনুরূপ ব্যবহার করতে হবে

<html><body><p id="o"></p><script src="Fp.js"></script><script>t=[0,32,62,77,80,99,128,207];for(i=0;i<t.length;i++)document.getElementById('o').innerHTML+=f(t[i])+'<br/>';</script></body></html>

উপরের কোডে fp.js ফাইলটি জাভাস্ক্রিপ্ট কোড ধারণ করে।

ইনডেন্টের সাথে সম্মিলিত এইচটিএমএল এবং জাভাস্ক্রিপ্ট কোড

        f=(n)=>[0,22,39,63,80,81,109,141,208].some(
          (e,j,a)=>n<a[j+1]&&(r=(j-4?n-e+1+' ':'')+"Qupu0Blinkorp0Paas0Karpasus0Floopdoor0Dumaflop0Lindilo0Fwup".split(0)[j]))
        &&r;
        
        
        t = [0, 32, 62, 77, 80, 99, 128, 207];
        for (i = 0; i < t.length; i++) 
            document.getElementById('o').innerHTML += f(t[i]) + '<br/>';

    
<html>
<body>
    <p id="o"></p>    
</body>
</html>

সম্পাদনা:

আমি রিটার্নের বিবৃতি সরাতে এবং 17 কোড দ্বারা আমার কোড হ্রাস করতে সাহায্য করার জন্য আমি বিহানকে ধন্যবাদ জানাতে চাই

@ আইপিআই, আমাকে 7 বাইট বাঁচাতে সাহায্য করার জন্য ধন্যবাদ

দ্রষ্টব্য: আপনি কেবল ফলাফলগুলি ES6 তীর ফাংশন ব্যবহারের কারণে ফায়ারফক্স সংস্করণ 22+ এবং গুগল ক্রোম 45+ ব্রাউজারগুলিতে দেখতে পাচ্ছেন


@ vihan1086, আপনার পরামর্শের জন্য ধন্যবাদ
আনন্দরাজ

আমার এখনই তীর সংকেত সমর্থন সহ কোনও ব্রাউজারে অ্যাক্সেস নেই (সুতরাং আমি এটি পরীক্ষা করিনি) তবে আপনার মাসের অ্যারেটি প্রতিস্থাপন "Qupu0Blinkorp0Paas0Karpasus0Floopdoor0Dumaflop0Lindilo0Fwup".split(0)এবং 7 বাইট সংরক্ষণ করতে সক্ষম হওয়া উচিত ।
শান ল্যাথাম

থ্যাঙ্কস আইপি, আমি একটি স্পেস দিয়ে বিভাজন করছি, তবে শূন্যটি আমাকে দুটি বাইট বাঁচিয়েছিল! You must write a complete programআমি মনে করি এটি একা চালাতে হবে, আপনাকে প্রম্পটের মতো কিছু ব্যবহার করতে হবে ()।
ভার্টন

@ আইপি, আপনার মন্তব্যের জন্য ধন্যবাদ
আনন্দরাজ

@ ভার্টন, আপনার উত্তরের জন্য ধন্যবাদ, আমি 1 বাইট সংরক্ষণ করেছি
আনন্দরাজ

2

পাইথন 2, 168 বাইট

n=input();e=[-1,21,38,62,80,108,140,207];m=1
while n>e[m]:m+=1
print[`n-e[m-1]`+' '+'Qupu Blinkorp Paas Karpasus Dumaflop Lindilo Fwup'.split()[m-1],'Floopdoor'][n==80]

এই দিনটি 80অভ্যন্তরীণভাবে যেমন আচরণ 18 Karpasusকরে তবে মুদ্রণের জন্য ডেকে এলে তা উপেক্ষা করে। এছাড়াও পাইথন 2 এর input()কার্যকারিতা ( এর বিপরীতে raw_input()) এখানে সুবিধাজনক ছিল।


2

পার্ল 5, 140

এর মাধ্যমে চলমান প্রয়োজন perl -E:

$i=<>+1;$i-=$b=(22,17,24,17,1,28,32,67)[$c++]while$i>0;say$b>1&&$i+$b.$",(x,Qupu,Blinkorp,Paas,Karpasus,Floopdoor,Dumaflop,Lindilo,Fwup)[$c]

পরীক্ষার আউটপুট (@ ডেনিস থেকে চুরি করা পরীক্ষার কোড):

$for d in 0 32 62 77 80 99 128 207; do perl -E '$i=<>+1;$i-=$b=(22,17,24,17,1,28,32,67)[$c++]while$i>0;say$b>1&&$i+$b.$",(x,Qupu,Blinkorp,Paas,Karpasus,Floopdoor,Dumaflop,Lindilo,Fwup)[$c]' <<< $d; echo; done
1 Qupu

11 Blinkorp

24 Paas

15 Karpasus

Floopdoor

19 Dumaflop

20 Lindilo

67 Fwup

2

হাস্কেল, 171 167 বাইট

main=interact$f.read
f 80="Floopdoor"
f n=(g=<<zip[22,17,24,18,28,32,67](words"Qupu Blinkorp Paas Karpasus Dumaflop Lindilo Fwup"))!!n
g(n,s)=map((++' ':s).show)[1..n]

প্রোগ্রামটি স্টাডিন থেকে এটি ইনপুট পড়ে যা অবশ্যই এনএল এ শেষ হবে না। ইওএফ / ^ ডি দিয়ে ইনপুট সমাপ্ত করুন বা এর মতো কিছু ব্যবহার করুন echo -n 80 | ./what-day-is-it। (কিছু লোক স্যুইচটি echoবুঝতে পারে না -nএবং ডিফল্টরূপে এনএল বাদ দেয়)।

এটি কীভাবে কাজ করে: mainফাংশনটি ইনপুটটি পড়ে, এটিকে রূপান্তর করে Integerএবং কল করে fযা Floopdoorকোনও ইনপুট ক্ষেত্রে আক্ষরিক প্রত্যাবর্তন 80করে বা সম্ভাব্য সমস্ত তারিখগুলির একটি তালিকা তৈরি করে, ["1 Qupu", "2 Qupu", ... "1 Blinkorp", ... "67 Fwup"]যার অর্থ এটি nউপাদানটিকে পছন্দ করে । আমি তৈরি Karpasusএক দিন দীর্ঘ। 18 Karpasusঅবস্থানে রয়েছে 80এবং Floopdoorতালিকায় নিখোঁজদের সংশোধন করে ।

সম্পাদনা করুন: @ এমটিএনভিউমার্কের কৌশলটির ধারণা ছিল 18 Karpasusএবং 4 টি বাইট সংরক্ষণ করা হয়েছিল।


আমি মনে করি কার্পাসাস 18 দিনের দীর্ঘ, ভঙ্গ করে আপনি 4 বাইট সংরক্ষণ করতে পারবেন, সরিয়ে ,1এবং `x` - যেহেতু 80 এর জন্য প্যাটার্ন ম্যাচে ধরা পড়বে।
এমটনভিউমার্ক

@ এমটিএনভিউমার্ক: খুব চালাক অনেক ধন্যবাদ.
নিমি

1

সুইফট 2.0, 220 বাইট

কিছুই চালাক নয়, কেবল টিপলসের সংকলন থেকে ফিল্টার করে ...

func d(n:Int)->String{return n==80 ?"Floopdoor":[("Qupu",21,0),("Blinkorp",38,22),("Paas",62,39),("Karpasus",79,63),("Dumaflop",108,81),("Lindilo",140,109),("Fwup",208,141)].filter{$0.1>=n}.map{"\($0.0) \(n-$0.2+1)"}[0]}

বাগ সংশোধন করার জন্য সম্পাদিত, একটি স্থান সরিয়েছে


5
"আপনাকে অবশ্যই একটি সম্পূর্ণ প্রোগ্রাম লিখতে হবে।" সুতরাং এটি একটি ফাংশন হতে পারে না।
অ্যালেক্স এ।

1

জাভাস্ক্রিপ্ট (Node.js এ ES6), 196 বাইট

একটি কমান্ড লাইন যুক্তি লাগে:

a=+process.argv[2];for(d of['22Qupu','17Blinkorp','24Paas','17Karpasus','01Floopdoor','28Dumaflop','32Lindilo','67Fwup']){if(a<(z=parseInt(d)))return console.log((z>1?a+1+' ':'')+d.slice(2));a-=z}

ডেমো

process.argvব্রাউজারে কোনও কমান্ড-লাইন আর্গুমেন্ট ( ) না থাকায় স্নিপেটে কোডটি একটি ফাংশনে রাখা হয়েছে যা একটি আর্গুমেন্ট গ্রহণ করে:

// Snippet stuff
console.log = function(x){O.innerHTML += x + '\n'};

// Flooptonia function
function flooptonia(a) {
  a = +a;
  for (d in y=['22Qupu', '17Blinkorp', '24Paas', '17Karpasus', '01Floopdoor', '28Dumaflop', '32Lindilo', '67Fwup']) {
    if (a < (z = parseInt(y[d]))) return console.log((z > 1 ? a + 1 + ' ' : '') + y[d].slice(2));
    a -= z
  }
}

// Test
['0', '32', '62', '77', '80', '99', '128', '207'].map(flooptonia);
Test values: [0, 32, 62, 77, 80, 99, 128, 207]

<pre id=O></pre>


1

সুইফট 2.0, 215 204

let(n,t)=(Int(readLine()!)!,[(141,"Fwup"),(109,"Lindilo"),(81,"Dumaflop"),(63,"Karpasus"),(39,"Paas"),(22,"Blinkorp"),(0,"Qupu")])
print({(n==80 ?"Floopdoor":"\(n-$0.0+1) "+$0.1)}(t[t.indexOf{$0.0<=n}!]))

এটি একটি সম্পূর্ণ প্রোগ্রাম যা ব্যবহারকারীকে STDIN এ নম্বর ইনপুট করতে বলে।


1

মতলব, 187 বাইট

d=input('');l=[141 109 81 80 63 39 22 0];t=find(d>=l,1);m=strsplit('Fwup Lindilo Dumaflop Floopdoor Karpasus Paas Blinkorp Qupu');f='%d %s';if t==4;f='%d\b%s';end;fprintf(f,d-l(t)+1,m{t})

প্রসারিত সংস্করণ:

d=input('');
l=[141 109 81 80 63 39 22 0];
t=find(d>=l,1);
m=strsplit('Fwup Lindilo Dumaflop Floopdoor Karpasus Paas Blinkorp Qupu');
f='%d %s';
if t==4;
    f='%d\b%s';
end
fprintf(f,d-l(t)+1,m{t})

কনসোল ( stdin) থেকে একটি লাইন পড়ে , মাস শুরু হওয়ার দিনগুলির বিপরীত তালিকার প্রথম উপাদানটি খুঁজে পায় যেখানে ইনপুট অ্যারের উপাদানের চেয়ে বড় বা সমান হয়, তারপরে সেই অনুযায়ী মুদ্রণ করে।

এটি Juliaপ্রদর্শনের পর্যায়ে ব্যতীত উত্তরের প্রায় অনুরূপ । ( আমরা তাদের টার্নারি অপারেটরকে মারতে পারি না, মতলব অনুপলব্ধ )। একটি পূর্ণ ifবিবৃতি স্পষ্ট করে জানাতে , আমরা একটি বিশেষ কৌশল / Backspaceমুদ্রণ বিন্যাসে একটি অক্ষর) বিশেষ দিন / মাসের জন্য নম্বর 1 মুছে ফেলতে ব্যবহার করিFloopdoor


মতলব এবং অক্টাভা চ্যাট অংশগ্রহণকারীদের সাথে সহযোগিতায় ।


1

জাভাস্ক্রিপ্ট ES5 168 বাইট ব্যবহার করে

m=[-1,21,38,62,79,80,108,140];for(n=prompt(i=0);n>m[i+1]&&i++<8;);alert((i-4?n-m[i]+" ":"")+"Qupu0Blinkorp0Paas0Karpasus0Floopdoor0Dumaflop0Lindilo0Fwup".split(0)[i])

Ungolfed:

m=[-1,21,38,62,79,80,108,140];   // create range of starting indexes - 1

for(                             // begin for loop
  n=prompt(i=0);                 // initialize i to zero and prompt user
  n>m[i+1] && i++ < 8;           // exit if n>0; increment i; exit if i was < 8
  );                             // end for loop

alert(
  (i-4 ? n-m[i]+" ":"") + // special floopdoor case
  "Qupu0Blinkorp0Paas0Karpasus0Floopdoor0Dumaflop0Lindilo0Fwup".split(0)[i]);

  //^  create an array of strings by splitting at zero. Then, select element i

0

সি, 241 বাইট

খুব বেশি উত্তেজনাপূর্ণ কিছু না। এটি সম্পূর্ণ প্রোগ্রাম হওয়ার প্রয়োজন হলে 27 বাইট শেভ করতে পারত।

main(c,s)char**s;{c=atoi(s[1]);c-80?printf("%d ",c<22?c+1:c<39?c-21:c<63?c-38:c<80?c-62:c<109?c-80:c<141?c-108:c-140):0;puts(c<22?"Qupu":c<39?"Blinkorp":c<63?"Paas":c<80?"Karpasus":c<81?"Floopdoor":c<109?"Dumaflop":c<141?"Lindilo":"Fwup");}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.