এক্সকেসিডি প্রকারের সাথে মানানসই একটি ইন্টারফেস তৈরি করুন


34

color.rgb ("নীল") "# 0000FF" দেয়। color.rgb ("হলুদ বর্ণের নীল") NaN দেয়। color.sort () "রংধনু" দেয়

চিত্র এবং এর শিরোনাম পাঠ্যে নির্ধারিত নিয়মগুলি (এখানে উদ্ধৃত) ব্যবহার করে একটি প্রোগ্রাম তৈরি করুন যা প্রদত্ত সমস্ত ইনপুট গ্রহণ করে এবং উপযুক্ত আউটপুট প্রদর্শন করে।

  • স্টিন বা নিকটতম সমতুল্য সাথে ইনপুট নেওয়া যেতে পারে। [n]>এটি টাইপ করতে হবে এমন একটি লাইন থাকা উচিত এবং nপ্রতিটি কমান্ডে 1 টি বৃদ্ধি পায়। এটি শুরু করা উচিত 1।

  • স্টাডাউট বা নিকটতম সমতুল্য ব্যবহার করে ফলাফলটি প্রদর্শিত হবে। =>আউটপুট প্রতিটি লাইন একটি হওয়া উচিত ।

সমস্ত 13 টি শর্ত, শিরোনামের 3 টি (উদ্ধৃত) অবশ্যই কাজ করবে।

এটি কোড গল্ফ, তাই সংক্ষিপ্ত উত্তর জেতে।


16
ইন্টারফেসটি কতটা সাধারণ হওয়া উচিত? উদাহরণস্বরূপ, মেঝে ফাংশনটি কোনও সরবরাহিত ফ্লোটের জন্য কাজ করতে পারে বা আমরা ধরে নিতে পারি যে এটি কেবল কখনও পাস হবে 10.5?
ankh-morpork

1
আউটপুটটির জন্য> কী ইনপুটটির জন্য>> ইনপুট যুক্ত হয় এবং ইনপুট> আরও ডানদিকে চলে যায়?
স্পার

1
এই কমিকের সম্ভাব্য বিভিন্ন উপায়ে ব্যাখ্যা করা যেতে পারে। আমাদের কোন নির্দিষ্ট ধরণের এবং অপারেশনগুলি প্রয়োগ করতে হবে তার একটি তালিকা আপনি সরবরাহ করতে পারেন?
ব্রেইনস্টিল

5
কেন n1 বাড়াতে হবে? কমিক এটি কি করে না ... ;-)
মনিকা

3
@ ওল্ফ্রামএইচ - তবে তিনি কমান্ড 11-তে 2 = 4 করেছেন তাই এটি 14 নয় 12 টি প্রদর্শিত হবে
টিম

উত্তর:


21

পাইথন 3, 700 698 697 689 683 639 611

ইন্ডেন্টেশন হিসাবে ট্যাব।

from ast import*
E=literal_eval
O='=>%s\n'
P=print
I=int
def Q(a):P(O%a)
def W(a):Q('"%s"'%str(a))
def gb(a):W(_ if'y'in a else'#0000FF')
def t():W('rainbow')
def FLOOR(n):P(O%'|'*3+(O%'|{:_^10}').format(n))
def RANGE(*a):Q([('"','!',' ','!','"'),(1,4,3,4,5)][len(a)])
c=0
while 1:
    try:
        c+=1;A,*B=input('[%d]>'%c).split('+')
        if not A:W(c+I(B[0]))
        elif A=='""':Q("'\"+\"'")
        elif B:
            A=E(A);B=E(B[0])
            if A==B:Q('DONE')
            elif type(A)==list:Q(A[-1]==B-1)
            elif type(B)==list:W([I(A)])
            else:W(A+I(B))
        else:eval(A.lstrip('colrs.'))
    except:Q('Na'+['N','P','N.%s13'%('0'*13)][('-'in A)+len(B)])

যেহেতু এটি খালি ব্যবহার করে আপনি এটি Ctrl-C করতে পারবেন না। Ctrl-Z এবং হত্যা %% কাজ যদিও

কিছু শর্তগুলি সাধারণীকরণ করা হয় এবং অন্যরা কেবল সঠিক ইনপুট দিয়ে কাজ করবে।

  1. A+"B" যে কোনও A এবং B এর সাথে কাজ করবে ঠিক যখন নয় A == B
  2. "A"+[] যে কোনও এ এর ​​জন্য কাজ করবে যা কোনও ইন্টিতে রূপান্তরিত হতে পারে (হেক্স এবং বাইনারি স্ট্রিংগুলি উদাহরণস্বরূপ 0xff এবং 0b01010 সহ)
  3. (A/0)DivideByZeroErrorবাদে পরিচালিত যে কোনও এ, ইভাল কারণগুলির জন্য কাজ করবে
  4. (A/0)+Bযে কোনও এ বা বি নিয়ে কাজ করবে literal_eval(ই) একটি ত্রুটি উত্থাপন করে।
  5. ""+""শুধুমাত্র + চিহ্নের জন্য কাজ করে। অন্য যে কোনও কিছু NaN, NaP বা NaN.00 মুদ্রণ করবে ...
  6. [A, B, C]+DD == C+1তালিকাটি যে কোনও দৈর্ঘ্যের এবং কোনও সংখ্যার জন্য কাজ করবে তা যাচাই করে কাজ করে ।
  7. ^^
  8. 2/(2-(3/2+1/2))কিছু যে বিশ্লেষণ করতে ব্যর্থ হয় হয়েছে -একটি সঙ্গে +পরে এটা করবে আউটপুট NaN.000 ... 13 কোথাও
  9. RANGE(" ") হার্ডকোডেড
  10. +A যে কোনও এ। আউটপুটসের জন্য কাজ করবে "current_line_number+A"
  11. A+A যে কোনও এ এর ​​জন্য কাজ করে যতক্ষণ না সেগুলি একই রকম এবং বুলিটিন পাইথন ধরণের
  12. RANGE(1,5) হার্ডকোডেড।
  13. FLOOR(A) যে কোনও এ জন্য কাজ করে।
  14. colors.rgb("blue")ইভালের লিস্ট্রিপ এটিকে পরিণত করে gb("blue")যার মধ্যে একটি হার্ডকোড প্রতিক্রিয়া রয়েছে।
  15. colors.rgb("yellowish blue")ইস্টের lstrip এটিকে ঘুরিয়ে দেয় যাতে যুক্তি উপস্থিত gb("yellowish blue")থাকলে একটি অস্তিত্বশীল ভেরিয়েবল ব্যবহার করার চেষ্টা করে yযা ত্রুটি সৃষ্টি করে যা ব্যতীত NaN তে পরিণত হয়
  16. colors.sort()Lstrip এটিকে পরিণত করে t()যার একটি হার্ডকোড প্রতিক্রিয়া।

ব্রেনস্টিল আমার বিধি 10 এর অনুমানের মধ্যে একটি ত্রুটি নির্দেশ করেছে।


খুব ঝরঝরে. আমার মনে হয়, # 10 তে, "+ এ" লাইন সংখ্যাটি + আউটপুট করার উদ্দেশ্যে তৈরি করা হয়েছে , কেবল 1 টি
প্রিপেন্ডিংয়ের

আহ, হ্যাঁ, এখন এটি সুস্পষ্ট। ওয়েল এর মানে হল যে ইনট একটি একক চিঠি ফাংশন হিসাবে ভাল হবে। একটি বা দুটি বাঁচাতে পারে।
ড্যানিয়েল ওয়েকফিল্ড

পুনরায় # 9: RANGE(" ")ডাবল উদ্ধৃতি অক্ষর \ x22 থেকে স্পেস অক্ষর \ x20 এবং পিছনে অক্ষরের একটি ব্যাপ্তি।
জন ডিভোরাক

3
লাফ Re: কারণ রান্ডাল সেট 2করার 4লাইন 11, 2 এখন 4 হয় এবং 12 এখন 14. হয় এটাও লাইন সংখ্যা প্রযোজ্য।
জন ডিভোরাক

2
আপনি আপনার ইনডেন্টেশনের জন্য স্থান, ট্যাব এবং ট্যাব + স্পেস ব্যবহার করে কিছু বাইট সংরক্ষণ করতে পারেন।
টাইলো

16

পাইথন, 1110 বাইট

অপারেটর ওভারলোডিং খারাপ নয়, তাই না?

from re import*
class V(str):
 def __add__(s,r):return s[:-1]+chr(ord(s[-1])+r)
class S(str):
 def __str__(s):return "'"+s+"'"if '"'in s else'"'+s+'"'
 def __repr__(s):return str(s)
 def __add__(s,r):s=str(s)[1:-1];return S('['+s+']'if type(r)==L else '"+"' if(s,r)==('','')else s+r)
class I(int):
 def __add__(s,r):return type(r)(int(s)+int(r))if s!=r else V('DONE')
 def __div__(s,r):return N if r==0 else int(s)/int(r)
 def __pos__(s):return s+c*10
 def __mul__(s,r):return V('NaN.'+'0'*13+'13')if r==1 else int(s)*int(r)
class L(list):
 def __add__(s,r):return V(str(r==s[-1]+1).upper())
def RANGE(a,b=0):return 2*(a,S(chr(ord(a)+1)))if b==0 else tuple([a]+[b-1,a+2]*((b-a)/4)+[b-1,b])
def FLOOR(n):return V('|\n|\n|\n|___%s___'%n)
def colorsrgb(c):
 m={'blue':V('#0000FF')}
 return m.get(c,N)
def colorssort():return V('rainbow')
N=V('NaN')
c=1
while True:
 try:l=raw_input('[%d] >'%c)
 except:break
 l=sub(r'(?<!"|\.)(\d+)(?!\.|\d)',r'I(\1)',l)
 l=sub(r'"(.*?)"',r'S("\1")',l)
 l=sub(r'\[(.*?)\]',r'L([\1])',l)
 l=sub(r'/\(','*(',l)
 l=sub('s\.','s',l)
 for x in str(eval(l)).split('\n'):print ' =',x
 c+=1

আমার লক্ষ্যটি যতটা সম্ভব জেনেরিক করে তুলছে ততটা জিত ছিল না (স্পষ্টতই)। খুব কম হার্ডকডযুক্ত। ভালো জিনিস চেষ্টা করে দেখুন RANGE(10), 9*1এবং RANGE("A"), (2/0)+14এবং "123"মজা ফলাফলের জন্য!

এখানে একটি নমুনা অধিবেশন:

ryan@DevPC-LX:~/golf/xktp$ python xktp.py
[1] >ryan@DevPC-LX:~/golf/xktp$ python xktp.py
[1] >1+1
 = DONE
[2] >2+"2"
 = "4"
[3] >"2"+2
Traceback (most recent call last):
  File "xktp.py", line 31, in <module>
    for x in str(eval(l)).split('\n'):print ' =',x
  File "<string>", line 1, in <module>
  File "xktp.py", line 7, in __add__
    def __add__(s,r):s=str(s)[1:-1];return S('['+s+']'if type(r)==L else '"+"' if(s,r)==('','')else s+r)
TypeError: cannot concatenate 'str' and 'I' objects
ryan@DevPC-LX:~/golf/xktp$ python xktp.py
[1] >ryan@DevPC-LX:~/golf/xktp$
ryan@DevPC-LX:~/golf/xktp$
ryan@DevPC-LX:~/golf/xktp$
ryan@DevPC-LX:~/golf/xktp$ python xktp.py
[1] >2+"2"
 = "4"
[2] >"2"+[]
 = "[2]"
[3] >"2"+[1, 2, 3]
 = "[2]"
[4] >(2/0)
 = NaN
[5] >(2/0)+2
 = NaP
[6] >(2/0)+14
 = Na\
[7] >""+""
 = '"+"'
[8] >[1,2,3]+2
 = FALSE
[9] >[1,2,3]+4
 = TRUE
[10] >[1,2,3,4,5,6,7]+9
 = FALSE
[11] >[1,2,3,4,5,6,7]+8
 = TRUE
[12] >2/(2-(3/2+1/2))
 = NaN.000000000000013
[13] >9*1
 = NaN.000000000000013
[14] >RANGE(" ")
 = (" ", "!", " ", "!")
[15] >RANGE("2")
 = ("2", "3", "2", "3")
[16] >RANGE(2)
Traceback (most recent call last):
  File "xktp.py", line 31, in <module>
    for x in str(eval(l)).split('\n'):print ' =',x
  File "<string>", line 1, in <module>
  File "xktp.py", line 15, in RANGE
    def RANGE(a,b=0):return 2*(a,S(chr(ord(a)+1)))if b==0 else tuple([a]+[b-1,a+2]*((b-a)/4)+[b-1,b])
TypeError: ord() expected string of length 1, but I found
ryan@DevPC-LX:~/golf/xktp$ python xktp.py
[1] >ryan@DevPC-LX:~/golf/xktp$ # oops
ryan@DevPC-LX:~/golf/xktp$ python xktp.py
[1] >RANGE("2")
 = ("2", "3", "2", "3")
[2] >RANGE(2*1)
Traceback (most recent call last):
  File "xktp.py", line 31, in <module>
    for x in str(eval(l)).split('\n'):print ' =',x
  File "<string>", line 1, in <module>
  File "xktp.py", line 15, in RANGE
    def RANGE(a,b=0):return 2*(a,S(chr(ord(a)+1)))if b==0 else tuple([a]+[b-1,a+2]*((b-a)/4)+[b-1,b])
TypeError: ord() expected a character, but string of length 19 found
ryan@DevPC-LX:~/golf/xktp$ python xktp.py # oops again
[1] >RANGE(1,20)
 = (1, 19, 3, 19, 3, 19, 3, 19, 3, 19, 20)
[2] >RANGE(1,5)
 = (1, 4, 3, 4, 5)
[3] >RANGE(10,20)
 = (10, 19, 12, 19, 12, 19, 20)
[4] >RANGE(10,200)
 = (10, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 12, 199, 200)
[5] >+2
 = 52
[6] >+"99"
Traceback (most recent call last):
  File "xktp.py", line 31, in <module>
    for x in str(eval(l)).split('\n'):print ' =',x
  File "<string>", line 1, in <module>
TypeError: bad operand type for unary +: 'S'
ryan@DevPC-LX:~/golf/xktp$ python xktp.py # oops again and again!
[1] >FLOOR(200)
 = |
 = |
 = |
 = |___200___
[2] >2+2
 = DONE
[3] >3+#
Traceback (most recent call last):
  File "xktp.py", line 31, in <module>
    for x in str(eval(l)).split('\n'):print ' =',x
  File "<string>", line 1
    I(3)+#
         ^
SyntaxError: unexpected EOF while parsing
ryan@DevPC-LX:~/golf/xktp$ python xktp.py
[1] >3+3
 = DONE
[2] >ryan@DevPC-LX:~/golf/xktp$

7

সি, 412 বাইট

এটি মূলত হার্ডকোডযুক্ত, তবে এখনও অবধি অন্যান্য সমস্ত উত্তরগুলির মধ্যে কিছু অনুপস্থিত ছিল ...

i;char b[99];main(){for(;;){printf("[%d]>",abs(++i));gets(b);i-=b[2]==50?26:0;printf("=>");puts(*b==82?b[6]==34?"('\"',\"!\",\" \",\"!\",'\"')":"(1,4,3,4,5)":*b==70?"|\n=>|\n=>|\n=>|___10.5___":*b==43?"12":*b==91?b[8]==50?"FALSE":"TRUE":*b==34?b[1]==34?"'\"+\"'":"\"[2]\"":*b==40?b[5]==43?"NaP":"NaN":*b==99?b[7]=='s'?"rainbow":b[12]==98?"#0000FF":"NaN":b[1]==43?b[2]==34?"\"4\"":"DONE":"NaN.000000000000013");}}

আউটপুট:

[1]>2+"2"
=>"4"
[2]>"2"+[]
=>"[2]"
[3]>(2/0)
=>NaN
[4]>(2/0)+2
=>NaP
[5]>""+""
=>'"+"'
[6]>[1,2,3]+2
=>FALSE
[7]>[1,2,3]+4
=>TRUE
[8]>2/(2-(3/2+1/2))
=>NaN.000000000000013
[9]>RANGE(" ")
=>('"',"!"," ","!",'"')
[10]>+2
=>12
[11]>2+2
=>DONE
[14]>RANGE(1,5)
=>(1,4,3,4,5)
[13]>FLOOR(10.5)
=>|
=>|
=>|
=>|___10.5___

5

পাইথন 3, 298

সবকিছু হার্ডকোডযুক্ত, তবে ইনপুটটি এমন একটি সংখ্যায় রূপান্তরিত হয় যা তারপরে একটি স্ট্রিংয়ে রূপান্তরিত হয় এবং একটি বৃহত স্ট্রিংয়ের সন্ধান করা হয় যাতে এই উত্তরগুলি অনুসরণ করে তাদের উত্তরগুলি অনুসরণ করে।

B="""53"#0000FF"~62DONE~43NaN.000000000000013~25(1,4,3,4,5)~26"rainbow"~49"4"~21"[2]"~29FALSE~15|*|*|*|___10.5___~17'"+"'~1212~60('"',"!"," ","!",'"')~24NaN~31TRUE~64NaN~76NaP"""
i=0
while 1:i+=1;s=input("[%s]>"%i);print("=>"+B[B.find(str(sum(map(ord,s))%81))+2:].split("~")[0].replace("*","\n=>"))

1

পাইথন 3, 542 484 বাইট

যেহেতু এখানে পরম হার্ডকোডিংয়ের কোনও উল্লেখ নেই আমার সমাধান।

a={'2+"2"':'"4"','"2"+[]':'"[2]"',"(2/0)":"NaN","(2/0)+2":"NaP",'""+""':"'\"+\"'","[1,2,3]+2":"FALSE","[1,2,3]+4":"TRUE","2/(2-(3/2+1/2))":"NaN.000000000000013",'RANGE(" ")':'(\'"\',"!"," ","!",\'"\')',"+2":"12","2+2":"DONE","RANGE(1,5)":"(1,4,3,4,5)","FLOOR(10.5)":"|\n|\n|\n|___10.5___",'colors.rgb("blue")':'"#0000FF"','colors.rgb("yellowish blue")':"NaN","colors.sort()":'"rainbow"'}
i=1
while 1:b=a[input("[%i]>"%i).replace("\t","")].split("\n");print("=> "+"\n=> ".join(b));i+=1

হার্ডকোডিং ঠিক আছে, তবে আমি মনে করি ডিফল্টরূপে নিষিদ্ধ করা লুফোলগুলি ডিফল্টরূপে নিষিদ্ধ। : পি
lirtosiast

@ থমাসকওয়া আমি এখানে এমন কিছু দেখতে পাচ্ছি না যা নিষিদ্ধ ছাঁটাই। আছে?
ইথান বিয়ারলাইন

1
আমার কাছে সবকিছুই সামঞ্জস্যপূর্ণ দেখাচ্ছে। আমি আগেই ধরে নিয়েছিলাম যে আপনি একটি ফাঁকফোকরটি শোষণ করছেন কারণ আপনি বলেছিলেন যে "[...] মানক লুফোলগুলির কোনও উল্লেখ নেই"।
লিটারোসিয়াসট

1
আমি মনে করি এটি সৃজনশীল, তবে কোনও উত্তর নয়। প্রশ্নটি ইনপুট এবং আউটপুট সম্পর্কে স্পষ্টভাবে কথা বলে: "এমন একটি প্রোগ্রাম তৈরি করুন যা প্রদত্ত সমস্ত ইনপুট গ্রহণ করে এবং উপযুক্ত আউটপুট প্রদর্শন করে"
অজানা

2
উভয় উদ্ধৃতি ব্যবহার করে আপনি একটি ভাল পরিমাণে সঞ্চয় করতে পারেন। "2+\"2\""হয়ে '2+"2"'। আপনি যদি কাউন্টার ভেরিয়েবল যোগ করেন তবে আমদানি গণনাও সরানো যেতে পারে।
ড্যানিয়েল ওয়েকফিল্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.