পুনরাবৃত্তি ব্যাখ্যা!


11

এই চ্যালেঞ্জটি পুনরাবৃত্তি সম্পর্কে দুটি চ্যালেঞ্জের সিরিজের প্রথম। দ্বিতীয়টি শীঘ্রই উঠে আসবে।

পুনরাবৃত্তি (যা আমি কেবল তৈরি করেছি) নামে একটি ভাষায় চিরকাল পুনরাবৃত্তি করার 12345678901234567890...সাথে রয়েছে একটি অসীম স্ট্রিং 1234567890

নিম্নলিখিত বাক্য গঠন আউটপুট সংখ্যার জন্য উপলব্ধ:

  • +-*/: এটি পুনরাবৃত্ত অঙ্কগুলির স্ট্রিংয়ে অপারেটরটি সন্নিবেশ করায়।
    • উদাহরণ:
      • +-> 1+2= 3( +একটি টিপে +মধ্যে 1এবং 2)
      • +*-> 1+2*3= 1+6= 7(উপরের মত একই, দুটি অপারেটর বাদে এখন ব্যবহৃত হয়)
      • /-> 1/2= 0(পুনরাবৃত্তি পূর্ণসংখ্যা বিভাগ ব্যবহার করে)
      • //-> 1/2/3= 0/3= 0(পুনরাবৃত্তি একাধিক বিয়োগ এবং বিভাগগুলির সাথে "বাম সংযোগ" ব্যবহার করে)
    • প্রতিটি অপারেটর inোকানো হয় যাতে এটির বামে একটি অঙ্ক থাকে, যদি না থাকে c(নীচে দেখুন)।
  • c: স্ট্রিংয়ের পরবর্তী অঙ্কের সাথে প্রতিযোগিতা।
    • উদাহরণ:
      • c+-> 12+3= 15( গঠনের জন্য , c"অবিরত" থাকে 1এবং পরবর্তী অঙ্কের সাথে এটি যুক্ত করে তোলে )212
      • +c-> 1+23=24
      • ccc -> 1234
  • (): সংখ্যা প্রক্রিয়াকরণের জন্য বন্ধনী।
    • উদাহরণ:
      • (c+)*-> (12+3)*4= 15*4= 60(পুনরাবৃত্তি ক্রমের ক্রম ব্যবহার করে)
      • (c+)/c-> (12+3)/45= 15/45=0
      • (cc+c)/-> (123+45)/6= 168/6=28
  • s: একটি সংখ্যা এড়িয়ে যান (অসীম স্ট্রিং থেকে নম্বরটি সরিয়ে দেয়)।
    • s+-> 2+3= 5( sএড়িয়ে যাওয়া 1)
    • csc-> 124(প্রথম cconcats 1এবং 2, sছেড়ে যাওয়া 3, এবং চূড়ান্ত cconcats 12করার 4)
    • +s+-> 7(প্রথম +যোগ 1এবং 2করতে 3, sছেড়ে যাওয়া 3, এবং চূড়ান্ত +যোগ 3করার 4করতে 7)
    • cs*(++)-> 12*(4+5+6)= 12*15=180

উপরের উদাহরণগুলিতে কেবল অসীম স্ট্রিংয়ে সীমাবদ্ধ অঙ্ক ব্যবহার করা হবে। ব্যবহৃত সংখ্যার সমান number of operators, concats and skips + 1

আপনার কাজটি যখন পুনরাবৃত্তি কোডের একটি স্ট্রিং দেওয়া হয় তখন ফলাফলটি আউটপুট দেয়।

ইনপুট এবং আউটপুট উদাহরণগুলি:

++ -> 6
- -> -1
(-)* -> -3
cscc -> 1245
(cc+c)/ -> 28
cc+c/ -> 130
cs*(++) -> 180

এটি কোড গল্ফ, তাই বাইটস মধ্যে সংক্ষিপ্ততম কোড!

চশমা:

  • আপনি গ্যারান্টিযুক্ত যে ফলাফল কখনও উপরে যাবে না 2^31-1
  • আপনার গ্যারান্টিযুক্ত যে ইনপুটটি কেবলমাত্র চিহ্নগুলিতে থাকবে +-*/cs()
  • একটি খালি প্রোগ্রাম আউটপুট হবে 1

এর কী ~? আমাদের ঝুলন্ত রাখবেন না।
রবার্ট ফ্রেজার

@ রবার্টফ্রেজার ওফস, এটি একটি ভুল ছিল - সিটি মূলত ~, তবে মনে হয় আমি এটি পুরোপুরি স্থির করি নি।
ক্লিস্টিক

1
টনহোস্পেল ওহ, আপনি সেখানে একটি ভাল পয়েন্ট পেয়েছেন। "S" চিহ্নটি মূলত এটির সাথে যুক্ত নম্বরটি সম্পূর্ণরূপে অসীম স্ট্রিং থেকে সরিয়ে দেয়, সুতরাং এটি উভয় পরিস্থিতিতেই হ্যাঁ।
ক্লিস্টিক

2
আপনার স্পেসিফিকেশন তবে বলে s+হয় 2+3তার প্রথম উদাহরণ হিসাবে। এবং তবুও sআমাকে তল্লাশী করে চলেছে। আমি বিস্মিত কিভাবে +s()+প্রসারিত। যদি তা না হয় 1+(2)+4তাহলে (সামনে আসে 2কিন্তু sযে এমনকি আগে আসে (আপাতদৃষ্টিতে এখনো ছেড়ে যাওয়া 3, না 2। তবে ফলাফল যদি হয় 1+(3)+4তবে তার প্রভাব sতার পরে কী ঘটে তার উপর নির্ভর করে (এর সাথে তুলনা করুন +s+)
টন হসপেল

1
scহয় 23এবং s+হয় 1+3? না sলাফালাফি 1এখন বা 2? সকল উদাহরণ operands প্রথম অপারেশন ব্যবহার 1এবং 2... তাই scহওয়া উচিত 13
তিতাস

উত্তর:


4

জাভাস্ক্রিপ্ট (ES6), 110 বাইট

s=>eval((" "+s)[R='replace'](/[^\)](?!\()/g,x=>x+i++%10,i=1)[R](/c| (\ds)+|s\d/g,"")[R](/\d+\/\d+/g,"($&|0)"))

খুব সাধারণ, তবে পূর্ণসংখ্যা বিভাগ 25 বাইট যুক্ত করে। কোনও কারণে জেএসের একটি রেজেেক্স স্ট্রিং এবং প্রথম অক্ষরের শুরুতে উভয়ই মেলে না, যাতে কয়েকটা বাইটও যুক্ত হয়।

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

  1. ইনপুটটিতে একটি স্থান প্রস্তুত করুন।
  2. প্রতিটি অক্ষরের সাথে পরের অঙ্কটি সংযোজন করুন (ব্যতীত )) যা এর আগে অবিলম্বে নয় (
  3. প্রতিটি c, একটি অঙ্ক sশুরুতে ( 1s2-> 2) এবং প্রতিটি s+ একটি (( 3s4> 3)) সরান ।
  4. প্রতিটি বিভাগের ক্রিয়াকলাপকে আন্তঃ বিভাগে ( 1/2-> (1/2|0)) রূপান্তর করুন ।
  5. মূল্যায়ন এবং ফিরে।

ঠিক আছে ... আপনার প্রোগ্রামটিতে একটি বাগ রয়েছে ... ss+ফেরত আসে 6, যখন এটি ফেরত বোঝানো হয় 7(দু'জন sএড়িয়ে যান 1এবং 2, সুতরাং +যোগ করে 3এবং 4) and
ক্লিস্টিক

@ কিওয়ার্প-ডের্প ধন্যবাদ, স্থির।
ETH প্রোডাকশনগুলি

এই জাতীয় কিছু /^|,|$/gশুরুতে একবারেই মিলবে কারণ উভয় ম্যাচের একই সূচক থাকবে। $একই সমস্যা নেই কারণ ম্যাচের কোনও সম্ভাব্য ম্যাচের চেয়ে আরও বেশি সূচক রয়েছে।
নিল

0

ব্যাচ, 332 বাইট

@echo off
set s=
set e=
set d=
set r=
set/ps=
:d
set/ad=-~d%%10
:l
if "%s%"=="" goto g
set c=%s:~0,1%
set s=%s:~1%
if %c%==( set e=%e%(&goto l
if %c%==) set r=%r%)&goto l
if %c%==s goto d
if %c%==c set c=
if "%r%"=="" set/ar=d,d=-~d%%10
set e=%e%%r%%c%
set/ar=d
goto d
:g
if "%r%"=="" set/ar=d
cmd/cset/a%e%%r%

এর আচরণ sএটিকে অত্যন্ত বিশ্রী করে তোলে। (হয়তো csনির্ণয় করা উচিত 13এবং -sকরতে -2?) ভেরিয়েবল:

  • s ইনপুট স্ট্রিং (সুস্পষ্টভাবে ফাঁকা হয়ে গেছে কারণ সেট / পি ভেরিয়েবল পরিবর্তন করে না যদি আপনি কিছু না ইনপুট করেন)
  • eস্বাভাবিক পূর্ণসংখ্যার গাণিতিকের আংশিক অভিব্যক্তি (যা আমরা এর set/aরূপ হিসাবে প্রেরণ করতে পারি eval)
  • d অঙ্কের অসীম স্ট্রিং থেকে পরবর্তী অঙ্ক
  • rসর্বশেষ অপারেটরের ডানদিকে side আমরা তাৎক্ষণিকভাবে এটি প্রকাশ করতে পারি না কারণ (প্রথমে আসার দরকার রয়েছে তবে আমাদের এটি সংরক্ষণ করা দরকার যাতে এটি sবাড়বে না। ভাগ্যক্রমে এটি হ্যান্ডলিংটি )সামান্য সহজ করে তোলে।
  • c বর্তমান চরিত্র।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.