আমার কম্পিউটার মেরামত করতে বিলম্ব করতে সহায়তা করুন!


23

এই চ্যালেঞ্জটি বাস্তব (এবং ট্র্যাজিক) অনুপ্রেরণার মাধ্যমে আপনার কাছে আনা হয়েছে। সম্প্রতি, আমার কীবোর্ডের নম্বর সারিটি কিছুটা বিক্ষিপ্ত হয়েছে। কীগুলি 1-9কখনও কখনও কাজ করে - তবে অন্যান্য সময়ে তাদের কোনও ফল হয় না। আগ্রহী প্রোগ্রামার হিসাবে এটি ভয়াবহ! (এই বিস্ময়কর বিন্দুটি দেখুন? এখনই আপনি কীভাবে জানেন যে তারা এই মুহূর্তে কাজ করছে)) কেবল আমি কেবল নিজেরাই সংখ্যাগুলি চাই না, প্রতীকগুলিও!@#$%^&*(অর্ধেক সময় পুরোপুরি অকার্যকর! একজন সি প্রোগ্রামার হিসাবে আমার ল্যাপটপটি ঠিক করার জন্য কোডের সাথে আমার ডুডলিংয়ের ব্যস্ত সময়সূচীটি সরিয়ে দেওয়ার চেয়ে সমস্যাটি ঘিরে কাজ করার ক্ষেত্রে আমি আরও আগ্রহী হয়ে উঠছি। গত কয়েক সপ্তাহ ধরে, ধীরে ধীরে, আমার কোডের সমস্ত সংখ্যার আক্ষরিকটি হেক্সাডেসিমাল দিয়ে প্রতিস্থাপন করা হয়েছে যাতে সংখ্যাগুলি অনুলিপি এবং আটকানোর জন্য আমাকে প্রায় শিকারে যেতে হবে না। যাইহোক, কিছু নম্বর কীগুলি ছাড়াই টাইপ করা সহজ নয় 1-9। উদাহরণস্বরূপ, সংখ্যাটি 1এত সহজভাবে হেক্সাডেসিমালে লেখা যায় না এবং আমি 1আমার কোডটিতে এস এর পরিবর্তে অবলম্বন করেছি 0xF - 0xE। শুধুমাত্র কি যে প্রভাবিত হয় হয় 1-9, তাই আমি মত চিহ্ন পূর্ণ ব্যবহার বজায় রাখা +, -এবং /। তবে, আমি হিসাবে গুণ বা বন্ধনী ব্যবহার করতে পারি না*এবং (প্রায়শই ভেঙে যায়। এটি আপনার চ্যালেঞ্জের দিকে নিয়ে যায়।

ইনপুট

একটি পূর্ণসংখ্যা, nস্টিডিন বা আপনার ভাষার সমতুল্য। আপনি যদি চান, পূর্ণসংখ্যার আগে বা পরে একটি নতুন লাইন বা অন্যান্য সাদা স্থানের অক্ষর হতে পারে। বিকল্পভাবে, আপনি একটি কমান্ড লাইন আর্গুমেন্টের মাধ্যমে ইনপুট পেতে পারেন।

আপনার প্রোগ্রামটি সঠিকভাবে নেতিবাচক ইনপুটকে প্রতিক্রিয়া জানাবে এবং কমপক্ষে 32-বিট স্বাক্ষরিত পূর্ণসংখ্যাগুলি পরিচালনা করতে সক্ষম হবে।

আউটপুট

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

আউটপুটটি এমন ফর্মের মধ্যে হওয়া উচিত A % A % A...যেখানে কেবলমাত্র অঙ্কগুলি Aঅনুসরণ করে একটি হেক্সাডেসিমাল মান থাকে এবং এটি প্রতীকগুলির মধ্যে একটি । ভাসমান-বিন্দু নয়, পূর্ণসংখ্যা বিভাগের বর্ণনা দিন ।0xA-F a-f%-+//

(নোট করুন যে আপনার আউটপুটটির ফলাফল nপ্রথমে বাম থেকে ডানে এবং তারপরে সংযোজন অনুসারে বাম থেকে ডানদিকে সংযোজন এবং বিয়োগফলগুলি মূল্যায়নের সময় হওয়া উচিত ))

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

ইনপুট আউটপুট

  1. 1

    0xF - 0xE(অথবা 0xF-0xEবা 0xB-0xAবা 0xd - 0xcবা 0xF/0xF)

  2. 15

    0xF

  3. 255

    0xFF

  4. 30

    0xF + 0xF

স্কোরিং এবং বিধি

এটি কোড-গল্ফ। আপনার প্রাথমিক স্কোরটি আপনার উত্স ফাইলে থাকা বাইটের সংখ্যা।

আপনি 1-9আপনার উত্সের কোনও অঙ্ক ব্যবহার করতে পারবেন না ।

আপনি !@#$%^&*(আপনার উত্সে প্রতীক ব্যবহার করতে পারেন তবে প্রত্যেকটি আপনার স্কোরের জন্য +20 এর জরিমানাতে আসে।

আপনার প্রোগ্রামটি এমন কোনও ফাংশন দ্বারা প্রতিস্থাপিত হতে পারে যা nততক্ষণ আর্গুমেন্ট হিসাবে গ্রহণ করে যতক্ষণ না এই ফাংশনটি মানব-পঠনযোগ্য আউটপুটটির কোনও আকার তৈরি করে। আপনার ফাংশনের ফেরতের মান আউটপুট হিসাবে গণনা করা হয় না।

স্ট্যান্ডার্ড লুফোলগুলি অনুমোদিত নয়।

সর্বনিম্ন স্কোর জয়! শুভকামনা!

আমি কি বিন্যাস / প্রশ্ন / স্পষ্টতা বুদ্ধিমান কিছু বুদ্ধিযুক্ত ছিল? আমাকে জানতে দাও! এটি এই সাইটে আমার প্রথম জমা!


পূর্ণসংখ্যার আকারের উপরের সীমা কি আছে? এছাড়াও, নেতিবাচক সংখ্যাগুলি কিছু স্বেচ্ছাচারিত নির্ভুলতার জন্য প্রতিনিধিত্ব করা হবে (অর্থাত্ 32 বিট)?
FryAmTheEggman

@ ফ্রাইআম দ্য এজিজিম্যান স্পষ্ট করে আসল পোস্টটি সম্পাদনা করেছেন। ইনপুট নেতিবাচক হতে পারে এবং আপনার প্রোগ্রামটি কমপক্ষে 32 বিট ইনপুটটিতে সঠিকভাবে প্রতিক্রিয়া জানাবে। ধন্যবাদ!
ব্রেইনস্টিল


এটি আমার কাছে বেশ শক্ত নকশার মতো মনে হচ্ছে, তবে আপনি যদি কিছু প্রতিক্রিয়া চান তবে আমি এটি স্যান্ডবক্সে পোস্ট করার পরামর্শ দিচ্ছি (ভবিষ্যতের চ্যালেঞ্জের জন্য) যাতে আপনি এটি মূলত পোস্ট করার আগে প্রতিক্রিয়া পেতে পারেন এবং লোকেরা এতে কাজ শুরু করার আগে ।
মার্টিন এন্ডার

1
পূর্ণসংখ্যা বা ভাসমান পয়েন্ট বিভাগ?
edc65

উত্তর:


5

জাভাস্ক্রিপ্ট 287 (187 + 20 * 5) 295 (195 + 20 * 5) 338 (198 + 20 * 7)

একটি ফাংশন যা 6 অনুমোদিত হেক্স ডিজিট (0xA থেকে 0xF) এবং 3 অনুমোদিত অপারেটরগুলির প্রতিটি সম্ভাব্য সংমিশ্রণগুলি পরীক্ষা করে। অনুরোধ অনুসারে পপআপের মাধ্যমে আউটপুট এবং কোনও মান ফিরিয়ে দেবে না।

আমি কমা দ্বারা বিচ্ছিন্ন অভিব্যক্তি গোষ্ঠী করতে [] ব্যবহার করেছি তবে লুপ এবং ফাংশন কলিংয়ের জন্য 5 7 টি বন্ধনী এড়াতে পারিনি ।
অঙ্কগুলি এড়াতে 1,2,3 এর জন্য এ, বি, সি ভেরিয়েবল রয়েছে (এটি কোডটিকে আরও বেশি অস্পষ্ট করে তোলে)

'('। এড়ানো উপর দৃষ্টি নিবদ্ধ করে কোড সংশোধিত সম্পাদনা করুনif s

সাবধান: এই ফাংশনটি অবিশ্বাস্যরূপে ধীর, এটি ফায়ারফক্সে কোনও স্ক্রিপ্টের জন্য এমনকি 90 এর মতো ছোট ইনপুটের জন্যও সীমা অতিক্রম করবে।

সমস্ত সম্ভাব্য অভিব্যক্তি গণনা করতে, আমি 3 থেকে শুরু করে চিরকালের জন্য উপরে নম্বর ব্যবহার করি। অঙ্কগুলি এনকোডিং:
0,1,2 অপারেটররা +, -, /
4 থেকে 9 হেক্স ডিজিট হ'ল এ..এফ
3 অনুমোদিত নয়
প্রতিটি সংখ্যাকে 3 নম্বর /3|[0-2]{2}/এড়ানোর জন্য এবং রেগুলার এক্সপ দিয়ে পরীক্ষা করা হয় এবং পরপর 2 টি অপারেটর থাকে ( ট্রেলিং এবং শীর্ষস্থানীয় অপারেটরগুলি এড়াতেও চেক করুন - কোড দেখুন)

ফলস্বরূপ স্ট্রিংটি 0xA + 0xA - 0xDবৈধ জাভাস্ক্রিপ্টের মতো এমন কিছু , তাই আমি এটি মূল্যায়নের জন্য eval ব্যবহার করি। আনফরফুনাটলি '/' অপারেটরটি ভাসমান পয়েন্ট এবং জাভাস্ক্রিপ্টে পূর্ণসংখ্যার নয়, সুতরাং আমি 100% নিশ্চিত নই যে ফলাফল চূড়ান্ত ফলাফলের পূর্ণসংখ্যার জন্য সঠিক ঘটনা castালাই (তবে আমি যথেষ্ট আত্মবিশ্বাসী, প্রদত্ত যে একটি ছোট গোলিং ত্রুটি করতে পারে না) একটি '*' দ্বারা প্রশস্ত করুন)

F=x=>{
  for(A=-~0,B=A+A,i=C=A+B,j=0;j?x-~~eval(L):A;)
  {
    j=++i+'0',k=0+j;
    for(c of~k.search(C+'|[0-'+B+']{'+B+'}',L='',w='0x')?j='':j)
      c>C?w+=' ABCDEF'[c-C]:[L+=w,w=' '+'+-/'[c]+' 0x']
  }
  alert(L)
}

অন্যকিছু

এখন, মজার কিছু। আমি oversভাল কলটি এড়ানোর জন্য একটি ওভারসিম্প্ল্লিফাইড এক্সপ্রেশন ভাব পার্সার ব্যবহার করেছি এবং মজাদারভাবে, এটি আরও দ্রুত পরিণত হয়েছিল।

পার্সারটি সত্যিই সরল করা হয়েছে, আসল পার্সারে ভি এবং ও-তে থাকা মুলতুবি থাকা মানসমূহের স্ট্যাক এবং মুলতুবি থাকা অপারেটরদের স্ট্যাকযুক্ত অ্যারে হওয়া উচিত। এখানে ভি একক মুলতুবি মান (এবং ফেরতের মানটিও) এবং ও ও কমপক্ষে 2 টি অক্ষর সহ একটি স্ট্রিং। '- + /' => '112' এর জন্য পিতে অপারেটরদের অগ্রাধিকার সারণী রয়েছে

এই স্কোর 275 + 4 * 20 => 355

F=x=>{
  for(A=-~0,B=A+A,i=C=A+B,D=A+C,j=0,P=''+A+A+B;j?x-V:A;)
  {
    j=++i+'0',k=0+j;
    for(c of~k.search(C+'|[0-'+B+']{'+B+'}',v=V=O=L='',w='0x')?j='':j)
      c>C?
        w+='ABCDEF'[v<<=D,v+=D+A-~c,c-D]
      :[
          P[O[0]]>=P[c]?[v=O>A?V/v|0:O>0?V+v:V-v,O=c]:O=c+O,
          L+=w,w=' '+'-+/'[c]+' 0x',V=v,v=0
      ]
  }
  alert(L)
}

টেস্ট সালে ফায়ারফক্স / ফায়ারবাগ কনসোলটি, ফিরতি সঙ্গে পরিবর্তন সতর্কতা (আরো অনেক ব্যবহারযোগ্য)

;[0, 1, 15, 255, 30].forEach(x=>console.log(x,F(x)))

0 0xA - 0xA
1 0xA / 0xA
15 0xF
255 0xFF
30 0xF + ​​0xF

কিছুটা কম স্পষ্ট (তবে ধৈর্য ধরুন)

;[16,40, 51, 62, 73, 84, 95].forEach(x=>console.log(x,F(x)))

16 0xBA / 0xB
40 0xA + 0xF + ​​0xF
51 0xDD -
0xAA 62 0xEA - 0xAC
73 0xA + 0xEA - 0xAB
84 0xFE -
0xAA 95 0xA + 0xFA - 0xAA


3

পাইথন 2: 185 বাইট + 2 * 20 = 225

একটি গুরুতর উত্তরের জন্য উপায় খুব দীর্ঘ। তবে যেহেতু এখনও কোনও উত্তর নেই, আমি যাইহোক এটি পোস্ট করব।

from itertools import product as p
n=input()
l=t=0
while~l:
 l=-~l
 for i in p("0xABCDEF+-/",repeat=l):
  j=""
  for k in i:j+=k
  try:exec"t="+j
  except:0
  if t==n:print j;l=~0;break

productঅনুমোদিত অক্ষরের সমস্ত বিভিন্ন ব্যবস্থা তৈরি করে। execএটি ডিকোড করার চেষ্টা করে দুঃখের সাথে এটি একটি ব্যতিক্রম প্রত্যাবর্তন করে, দীর্ঘ try - catchব্লকটি থেকে। এটি ফলাফল ঠিক আছে, এটি মুদ্রণ এবং বিদ্যমান।

2 বার পেনাল্টি, কারণ ফাংশন কল করার সময় bra ধনুর্বন্ধনী।


2
এই উত্তরে কয়েকটি সমস্যা থাকতে পারে: (1) 0হেক্সাডেসিমাল আক্ষরিক নয়; (2) পাইথন একটি ঋণাত্মক সংখ্যা জড়িত বিভাগ সি তুলনায় বিভিন্ন ফলাফল দেয়
feersum
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.