ইউনিভার্সাল স্পোকি মেম অনুবাদক


43

ভূমিকা

দেখা যাচ্ছে, এলিয়েনরা মেমসকে ঠিক তেমন ভালোবাসে। আমরা এখনও অবধি প্রতিটি এলিয়েন রেসের মুখোমুখি তাদের নিজস্ব সংস্করণ রয়েছে 2spooky4me( নিম্নলিখিত প্রশ্নটি দেখুন ) এবং সমতুল্য, যদিও কিছু প্রকরণ রয়েছে। CUTE1f গ্রহের বাসিন্দারা প্রচুর পরিমাণে স্পুক পরিচালনা করতে পারে না, তাই তাদের পছন্দের 1spooky2meস্পোকটি হ'ল, কঙ্কাল 7 মেমাররা তাদেরকে কিছু স্পোক পছন্দ করে, তাই তারা ব্যবহার করার প্রবণতা রাখে 9spooky11me

চ্যালেঞ্জ

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

ইনপুট

আপনার প্রোগ্রামটি দুটি স্ট্রিং ইনপুট গ্রহণ করবে:

  1. ইনপুট মেম (যেমন 2spooky4me)। ম্যাচ [a-zA-Z0-9]+
  2. রূপান্তর এটি প্রয়োগ করতে (যেমন +1, থেকে যেতে 2spooky4meকরার 3spooky5me)। ম্যাচ [+\-*/^]\d+(আপনি স্বীকার করতে হবে +, -, *, /, এবং ^অপারেটরদের যেমন আপনার ভাষায় দেশীয় উপস্থাপনা নির্বিশেষে)।

আউটপুট

আপনার প্রোগ্রামকে অবশ্যই ইনপুট মেমের ডিজিট সিকোয়েন্সগুলিতে প্রদত্ত রূপান্তরটির সাথে একটি স্ট্রিং আউটপুট (স্ট্যান্ডার্ড আউটপুট বা সমতুল্য মুদ্রিত) ফিরে আসতে হবে। ঘটনাগুলির এক অদ্ভুত ঘুরে দেখা যায় যে এখন পর্যন্ত যে সমস্ত জাতি এসেছিল তারা ভগ্নাংশের চেয়ে অবিচ্ছেদ্য মেমস পছন্দ করে, সুতরাং এই রূপান্তরগুলি পূর্ণসংখ্যার গাণিতিক সম্পাদন করা 1spooky1me /2উচিত (উদাহরণস্বরূপ পরিণতি হওয়া উচিত 0spooky0me)।

উদাহরণ

স্ট্যান্ডার্ড গাণিতিক ক্রিয়াকলাপগুলি প্রয়োগ:

Input:  2spooky4me +1
Output: 3spooky5me

Input:  2spooky4me -1
Output: 1spooky3me

Input:  2spooky4me *15
Output: 30spooky60me

Input:  10spooky900me /5
Output: 2spooky180me

অঙ্ক সিকোয়েন্সগুলি অবিচ্ছেদ্য; পূর্ণসংখ্যার কাটা এই জাতীয় ক্ষেত্রে দেখা উচিত:

Input:  idontunderstandmemes3 /2
Output: idontunderstandmemes1

আপনার ইনপুটটিতে কোনও অঙ্কের অনুক্রম নাও থাকতে পারে:

Input:  notreallyafunnymeme *100
Output: notreallyafunnymeme

আপনার পছন্দসই ভাষাতে এটি কোনও স্থানীয় ব্যবস্থা না থাকলেও আপনাকে অবশ্যই ক্ষয়ক্ষতি সমর্থন করতে হবে:

Input:  2spooky4me ^3
Output: 8spooky64me

স্ট্রিংয়ে অঙ্কের ক্রম সংখ্যার স্ট্রিং দৈর্ঘ্যের কোনও সীমা নেই:

Input:  some1meme2sequences3can4be5really6long7 /2
Output: some0meme1sequences1can2be2really3long3

অভিযোজ্য বস্তু

আপনার ভাষা যদি ভাষা বৈশিষ্ট্য হিসাবে স্বেচ্ছাচারিতা-যথার্থ পূর্ণসংখ্যার সমর্থন করে তবে আপনাকে অবশ্যই সেগুলি ব্যবহার করতে হবে। যদি এটি না হয়, আপনার স্বেচ্ছাচারিতা-যথার্থ পূর্ণসংখ্যার সমর্থন করার দরকার নেই। উদাহরণস্বরূপ, ভাষাটির অংশ হিসাবে এটি উপলভ্য Integerহওয়ার Intকারণে আপনার অবশ্যই হাস্কেল ব্যবহার করতে হবে ; ইন Java, আপনাকে ব্যবহার করার দরকার নেই BigIntegerকারণ এটি একটি লাইব্রেরি বৈশিষ্ট্য, কোনও ভাষা বৈশিষ্ট্য নয়।

Input:  2000000000000000000000000000000000000000000000000000000000000000000000000000000‌​000000000000000000000000000000000spooky4me /2
Output: 1000000000000000000000000000000000000000000000000000000000000000000000000000000‌​000000000000000000000000000000000spooky2me

এটি , সুতরাং স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ করা হয় এবং বাইটের মধ্যে সংক্ষিপ্ত উত্তরটি জিতে যায়!

লিডারবোর্ড

এই পোস্টের নীচে স্ট্যাক স্নিপেট উত্তরগুলি থেকে লিডারবোর্ড তৈরি করে) ক) ভাষা প্রতি সংক্ষিপ্ত সমাধানের তালিকা হিসাবে এবং খ) সামগ্রিক লিডারবোর্ড হিসাবে।

আপনার উত্তরটি প্রদর্শিত হয়েছে তা নিশ্চিত করার জন্য, দয়া করে নীচের মার্কডাউন টেমপ্লেটটি ব্যবহার করে আপনার উত্তরটি শিরোনাম দিয়ে শুরু করুন:

## Language Name, N bytes

Nআপনার জমা দেওয়ার আকারটি কোথায় ? আপনি যদি নিজের স্কোরটি উন্নত করেন তবে আপনি পুরানো স্কোরগুলি শিরোনামে রেখে দিতে পারেন । এই ক্ষেত্রে:

## Ruby, <s>104</s> <s>101</s> 96 bytes

যদি আপনি নিজের শিরোনামে একাধিক সংখ্যা অন্তর্ভুক্ত করতে চান (যেমন আপনার স্কোর দুটি ফাইলের সমষ্টি বা আপনি পৃথকভাবে দোভাষী পতাকা দণ্ডের তালিকা করতে চান), নিশ্চিত করুন যে আসল স্কোরটি শিরোনামের শেষ সংখ্যা:

## Perl, 43 + 2 (-p flag) = 45 bytes

আপনি ভাষাটির নামটিকে একটি লিঙ্কও তৈরি করতে পারেন যা স্নিপেটে প্রদর্শিত হবে:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes


3
আপনার শেষ পরীক্ষার কেসটি ভুল। আপনার আউটপুটে এটি / 5 হওয়ার জন্য অনেকগুলি শূন্য রয়েছে।
নিক হার্টলি

5
এই সর্বোপরি প্রথমে যুক্তিসঙ্গতভাবে ভালভাবে একসাথে রাখা প্রথম পোস্ট, তাই সংশ্লেষ :) নোট করুন আমাদের কাছে একটি স্যান্ডবক্স রয়েছে যেখানে আপনি আপনার চ্যালেঞ্জটি লাইভ হওয়ার আগে প্রতিক্রিয়ার জন্য পোস্ট করতে পারেন।
FryAmTheEggman

3
পিপিসিজিতে আপনাকে স্বাগতম (যদিও আপনি এখানে দৃশ্যত 2+ বছর ধরে রয়েছেন)। ভাল প্রথম চ্যালেঞ্জ। স্বেচ্ছাচারিত নির্ভুলতা পূর্ণসংখ্যার সংযোজন কি আদেশ দেয় যে উদাহরণস্বরূপ, জাভা অবশ্যইBigInteger তার গণনার জন্য ব্যবহার করবে ?
অ্যাডমবর্কবার্ক 12'16

18
আমরা এ পর্যন্ত যে প্রতিটি এলিয়েন রেসের মুখোমুখি হয়েছি ... এটি সম্পূর্ণ সত্য! :-)
লুইস মেন্ডো

2
এটি আপনার চ্যালেঞ্জ এবং শেষ পর্যন্ত আপনার পক্ষে, তবে যে ভাষাগুলি আলাদা সিনট্যাক্স ব্যবহার করে তা সত্যিই ন্যায্য নয়।
ডেনিস

উত্তর:


10

জल्फ, 15 14 বাইট

ρi«\d+»dC!6+HI

এখানে চেষ্টা করুন!

ব্যাখ্যা

ρi«\d+»dC!6+HI
ρ «\d+»         replace all digits
 i              in the input
       d        (functional replace)
         !6     eval (using jolf's custom infix eval)
           +H   the number as a string plus
             I  the second input
        C       floor the result (integer truncate)

মজার কথা, আমি জल्फকে এই চ্যালেঞ্জের পরে আপডেট করেছি, কিছু RegExp বিল্টইন যুক্ত করেছি। এটি 12 11 বাইট হতে পারে :

ρiLRdC!6+HI

24

রুবি, 50 44 43 বাইট

FGITW উত্তর। অতি দ্রুত যেতে!

6 নাইট সংরক্ষণ করার জন্য @ নীলকে ধন্যবাদ

ঠিক আছে, ছাড়িয়ে গেছে 44 এখনও 44

->m,t{m.gsub(/\d+/){eval$&+t.sub(?^,'**')}}

ওহ, ম্যান, এই প্রায় হুবহু একটি উত্তর আমি দূরে খোঁচা হয়েছিল: a=gets;$><<gets.gsub(/\d+/){eval$&+a}। আমার though! = ** জিনিসটি মিস হয়েছে, তবে সম্ভবত এটি আরও দীর্ঘ।
নিক হার্টলি

3
আপনার পুরো সমাধান হতে 4 থাকার জন্য +1 ঠিক কি হ্যান্ডেল করতে PowerShell প্রয়োজন হচ্ছে চেয়ে খাটো বাইট ^। : ডি
অ্যাডমবর্কবার্ক

15

পার্ল, 36 34 বাইট

s/\d+/"0|$&$^I"=~s#\^#**#r/gee

উত্স কোডটি 30 বাইট দীর্ঘ এবং এতে স্যুইচগুলি -pi( +4 বাইট ) প্রয়োজন। এটি STDIN থেকে প্রথম ইনপুট নেয়, দ্বিতীয় আর্গুমেন্ট হিসাবে আর্গুমেন্ট হিসাবে -i

@ ডেনিসআইবায়েভকে 2 বাইট বন্ধ করে দেওয়ার জন্য ধন্যবাদ!

আইডিয়নে এটি পরীক্ষা করুন ।


হ্যাঁ, আমি বুঝতে পেরেছিলাম যে কেউ যদি আমার রুবির উত্তরটি মারতে পারে তবে তা ডেনিস এবং / অথবা পার্লে থাকবে এবং আপনি একই সাথে উভয় প্রত্যাশা পূরণ করেছেন
মান ইঙ্ক

1
-pi4 বাইট হয়?
ক্যালকুলেটরলাইন

@ ক্যাটস আরেফ্লুফী বর্তমান sensক্যমত্যটি পতাকা ছাড়াই অনুরোধ থেকে সম্পাদনার দূরত্ব গণনা করা। এর মধ্যে -piবাকি কমান্ড থেকে পৃথক করার জন্য একটি স্থান অন্তর্ভুক্ত রয়েছে ।
ডেনিস

"0|$&"তুলনায় খাটো "0|".$&
ডেনিস ইবায়েভ

@ ডেনিসিবায়েভ যেহেতু ইনপুটটি বর্ণানুক্রমিক তাই "0|$&$^I"এটিও কাজ করে। ধন্যবাদ!
ডেনিস

9

পাওয়ারশেল ভি 2 +, 139 137 বাইট

param($a,$b)-join($a-split"(\d+)"|%{if($_-match"\d+"){if($b[0]-ne'^'){[math]::Floor((iex $_$b))}else{"$_*"*$b.Trim('^')+1|iex}}else{$_}})

ওওফ ... 47 বাইট কেবল অ্যাকাউন্টে দিতে হবে ^যেহেতু এটি পাওয়ারশেলের কোনও স্থানীয় অপারেটর নয়। 2 টেস্টেল্ল্যাটিংহেকলারের ধন্যবাদ 2 বাইট সংরক্ষণ করা হয়েছে।

যেমন ইনপুট লাগে $a=<word>, $b=<operation>মত, .\universal-spooky-meme.ps1 2spooky4me ^3। আমরা -split $aঅঙ্কগুলিতে, প্যারেন্সগুলিতে এটি সংযুক্ত করে তাই আমরা সীমান্তকারীকে রাখি, এবং লুপের সাহায্যে ফলাফল অ্যারে পাইপ করি |%{...}। যদি বর্তমান অংশটি একটি সংখ্যা হয় তবে আমরা প্রথমটিতে আছি if। আমরা কিনা প্রথম অক্ষরটি চেক করতে হবে $bঅর্থাৎ ^। যদি এটি না হয়, আমরা কেবল আমাদের বর্তমান টুকরাটি সংক্ষেপে $bএবং এটিকে iex(অনুরূপ eval) প্রেরণ করি , তারপরে পাইপলাইনে রেখে দিন। অন্যথায়, আমরা সঙ্গে একটি exponentiation স্ট্রিং তৈরি করা প্রয়োজন "$_*"*$b.Trim('^')+1এবং পাইপ যে iex, এবং পাইপলাইন ছুটি হয়। প্রদত্ত 2spooky4me ^3উদাহরণের জন্য, এটি যথাক্রমে হবে 2*2*2*1এবং 4*4*4*1

অন্যথায়, আমরা কেবল স্ট্রিংটি পাইপলাইনে রেখেছি।

এই সমস্ত ফলাফল পাইপলাইন থেকে -joinএকটি স্ট্রিংয়ের সাথে একসাথে ফিরে আসার আগে এনক্যাপসুলেটিং প্যারেনগুলির সাথে সংগ্রহ করা হয় । এটি পাইপলাইনে আবার বামে রয়েছে, এবং আউটপুট প্রোগ্রাম সমাপ্তির সাথে অন্তর্ভুক্ত।

উদাহরণ

PS C:\Tools\Scripts\golfing> .\universal-spooky-meme.ps1 2spooky4me ^5
32spooky1024me

PS C:\Tools\Scripts\golfing> .\universal-spooky-meme.ps1 2spooky4me /3
0spooky1me

উত্তরগুলি দেখার আগে আমি আমার নিজের লিখেছিলাম, তারপরে আমি আপনার কিছু ধারণাগুলিও চিমটি দিয়েছি - ধন্যবাদ। আমার মনে হয় আপনি প্রতিস্থাপন করতে পারে Floor(("$_$b"|iex))সঙ্গে Floor((iex $_$b))একটি দম্পতি সংরক্ষণ, হয়তো বা করতে iex $_+$b
টেসেল্ল্যাটিংহেকলার

@ টেসেল্লাটিংহেকলার দুটি বাইটের জন্য ধন্যবাদ!
অ্যাডমবর্কবার্ক

8

জাভাস্ক্রিপ্ট (ES7), 58 57 বাইট

(s,t)=>s.replace(/\d+/g,n=>0|eval(n+t.replace('^','**')))

সম্পাদনা: 1 বাইট সংরক্ষণ করা যখন আমার মনে পড়ে যে replaceএটি আক্ষরিক স্ট্রিংগুলিতেও কাজ করে।


দুর্দান্ত, আমি একটি ES6 সমাধানে কাজ করছি
বুলিন্ট

আপনি কি বাইট সংরক্ষণ করতে তরকারী করতে পারেন?
gcampbell

1
@ জি ক্যাম্পবেল হ্যাঁ, তবে আমি খুব অলস।
নিল

6

পাইথ, 29

Jws.i:zK"\d+"3m.vs.iJ]+d;:zK1

এটি মেম থেকে প্রতিটি সংখ্যা বের করে, এবং তারপরে ইন্টারলিভ করে ( .i) এটির পরে একটি স্থান এবং অন্য যুক্তির সাথে তালিকায় মোড়ক দিয়ে কাজ করে। তাই আপনি যদি আমাদের সংখ্যা 7এবং আমরা ছিল ^20আমরা তালিকা পেতে হবে: ["^", "7 ", "20"]। এর উপর পাইথের eval( .v) সমতল করা এবং ব্যবহার করা আমাদের সর্বদা অপারেশন দেয়। পরিশেষে এই মানগুলি সংখ্যার ঘটনার সাথে মূল স্ট্রিং বিভক্ত হয়ে থাকে।

উভয় ইনপুট যদি উদ্ধৃতি চরিত্রের সাথে ঘিরে থাকে বা দুটি বাইট সংক্ষিপ্ত হতে পারে তবে কেবলমাত্র তার একটির উদ্ধৃতি দেওয়া যেতে পারে This

এটি এখানে চেষ্টা করুন বা একটি টেস্ট স্যুট চালান


6

পাইথন 2, 156 89 88 87 বাইট

iপ্যারেটরের সাথে লম্বা এনপুট স্ট্রিংয়ের সংখ্যাসূচক অংশগুলি প্রক্রিয়া করতে ফাংশন হ্যান্ডলারের সাথে তাদের ভাষার বিকল্প প্রতিস্থাপন ফাংশন ব্যবহার করে এমন অন্যান্য উত্তরগুলির দ্বারা অনুপ্রাণিত o। পাইথনের পক্ষে দুর্ভাগ্য, ^অবশ্যই এটি প্রতিস্থাপন করা উচিত **, যার পুরোপুরি 18 বাইট খরচ হয়। কেবল ম্যাচের অবজেক্টের স্ট্রিং প্রতিনিধিত্ব .group(0)অ্যাক্সেস করার জন্য কলগুলি জিনিসগুলিকে আরও উন্নত করে না ...

কিউপেসট্যাক্সকে অপ্রয়োজনীয় তর্ক করার জন্য একটি উত্সাহিত স্থান এবং রুটটও স্পট করার জন্য ধন্যবাদ .group!

import re
lambda i,o:re.sub(r'\d+',lambda p:str(eval(p.group()+o.replace('^','**'))),i)

আমি মনে করি আপনি স্থানটি পরিত্রাণ পেতে পারেনi,o:
নিক হার্টলি

আপনি আরও দুটি বাইট সংরক্ষণ করতে পারেন: (1) ব্যবহার করে p.group()। (এটি 0 এ ডিফল্ট); এবং (2) এর সাথে r=re.sub;প্রথম re.subকলটি প্রতিস্থাপন করুন rএবং তারপরে ব্যবহার r('^','**',o)করুনo.replace(...)
রুটটও

@RootTwo: আমার জন্য, r('^','**',o)তারপর পলায়নের প্রয়োজন ^থেকে \^অর্ডার চরিত্র, না শুরুতে মেলে o, নেট কোন বাইট :-( সংরক্ষণ - কিন্তু ধন্যবাদ অপ্রয়োজনীয় ইশারা জন্য 0!
ojdo

5

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

আর একটি উদাহরণ, কেন আমরা সামঞ্জস্যতা পেতে ES7 এর জন্য অপেক্ষা করতে ঘৃণা করি

(a,b)=>a.match(/\d+|\D+/g).map(_=>(d=- -_)?eval(b[0]=="\^"?Math.pow(_,b.slice(1)):d+b)|0:_).join``

চলমান উদাহরণ:

f=(a,b)=>a.match(/\d+|\D+/g).map(_=>(d=- -_)?Math.ceil(eval(b[0]=="\^"?Math.pow(_,b.slice(1)):d+b)):_).join``

alert(f(prompt("Enter string!"), prompt("Enter operation!")));


আপনার মিলে যাওয়া রেজেক্সগুলি কিছুটা বন্ধ বলে মনে হচ্ছে। চলমান উদাহরণে, আপনি বড় হাতের অক্ষর ছেড়ে যান, যা এগুলি ফলাফল ("2spooky4ME", "+1" => "3spooky5") থেকে সরিয়ে দেয় এবং প্রথম উদাহরণে আপনি এর বিপরীতে মেলে \d+|\D+যা সমান .+[a-zA-Z0-9]+আপনি চান রেজেক্স, না? বা [a-zA-Z]+|[0-9]+বিভাজন যদি একটি পার্থক্য করে?
Itai Ferber

Math.powআপনার যে কোনওভাবেই এটি বিশেষ-ক্ষেত্রে করতে হওয়ায় সম্ভবত সরাসরি অনুরোধ করা সহজ হবে। এছাড়াও, আপনি পূর্ণসংখ্যা বিভাগ ব্যবহার করছেন?
নিল

@ নীল আমি তা ভুলে গেছি, মিনিট
বিলিন্ট

@ নীল কি সিলিংয়ের জন্য আরও ভাল উপায় আছে?
বুলিন্ট

1
@ItaiFerber \d+|\D+যেমন বেশ একই নয় .+। তারা একই নয় কারণ ক্লিনের সম্প্রসারণটি এর আগে ঘটে or। এটি দেখতে যদি একই রকম হয় তবে এটি (\d|\D)+যেমন হবে তবে এটি 2aএকটি গ্রুপের সমস্ত কথার সাথে মেলে না , এটি দুটি পৃথক গ্রুপ হবে।
FryAmTheEggman


4

কোটলিন, 416 413 বাইট

eval()কোটলিনে একটি অভাব সত্যিই সেই বাইট গণনাটিকে বাড়িয়ে দিয়েছে ...

fun main(a:Array<String>){var r=Regex("\\d+");var i=a[0];var n=a[1].takeLast(a[1].length-1).toInt();when(a[1][0]){'+'->print(r.replace(i,{m->""+(m.value.toInt()+n)}));'*'->print(r.replace(i,{m->""+(m.value.toInt()*n)}));'/'->print(r.replace(i,{m->""+(m.value.toInt()/n)}));'-'->print(r.replace(i,{m->""+(m.value.toInt()-n)}));'^'->print(r.replace(i,{m->""+(Math.pow(m.value.toDouble(),n.toDouble())).toInt()}));}}

অনলাইনে চেষ্টা করে দেখুন!

Ungolfed

fun main(a: Array<String>) {
    var r = Regex("""\d+""")
    var i = a[0]
    var n = a[1].takeLast(a[1].length - 1).toInt()
    when (a[1][0]) {
        '+' -> print(r.replace(i, { m -> "" + (m.value.toInt() + n) }))
        '*' -> print(r.replace(i, { m -> "" + (m.value.toInt() * n) }))
        '/' -> print(r.replace(i, { m -> "" + (m.value.toInt() / n) }))
        '-' -> print(r.replace(i, { m -> "" + (m.value.toInt() - n) }))
        '^' -> print(r.replace(i, { m -> "" + (Math.pow(m.value.toDouble(), n.toDouble())).toInt() }))
    }
}

4

পাওয়ারশেল (v4), 124 120 বাইট

# New 120 byte version:
$s,$a=$args;[regex]::Replace($s,'\d+',{($(if($a-ne($a=$a.Trim('^'))){
"$args*"*$a+1}else{"$args$a"})|iex)-replace'\..*'})

# Previous 124 byte version
$s,$a=$args;[regex]::Replace($s,'\d+',{if($a[0]-eq'^'){
[math]::pow("$args",$a.Trim('^'))}else{iex "$args$a-replace'\..*'"}})

(নিউলাইনগুলি কেবল অনুভূমিক স্ক্রোলিং এড়াতে এখানে রয়েছে, তারা যখন একটি লাইন হিসাবে সংরক্ষণ করা হয় তখন তারা কাজ করে)।

মন্তব্য, এবং ungolfed সংস্করণ অনুরোধ করা হয়েছিল:

$meme, $instruction = $args

# Scriptblock which processes the numbers
# to be replaced. $args is the input number.
$replacement = {

    # Generates a string of the calculation, by:
    # Removing leading ^ character, if present.
    # ^3 -> 3,      +3 -> +3
    # See if it was present, and switch code paths.
    # (Can be one combined step in the golf)
    # Switch code paths for "raise to the power of",
    # or basic arithmetic.
    $trimmedInstruction = $instruction.Trim('^')
    $tmp = if ( $instruction -ne $trimmedInstruction ) {

        # String multiplication, changes
        # function input "45" and instruction "3" into
        # "45*45*45*+1". The "3" implicitly casts to [int]
        # the +1 is there to make the trailing * not crash.
        "$args*" * $instruction + 1

    } else {
        # Cobble the basic math together as a string
        # "45" and "+10" becomes
        # "45+10"
        "$args$instruction"
    }

    # eval() the generated string (e.g. "45+10" or "45*45*45*+1")
    $tmp = Invoke-Expression $tmp      # iex

    # Use a regex golf to replace trailing .23423
    # decimals in case of division with remainder.
    # Acts as [math]::floor(), harmless on other numbers.
    $tmp -replace'\..*'
}

# A regular expression replacement which picks out all 
# the numbers (\d+) and runs them through the
# replacement function. Returns a string which 
# ends up on stdout
[regex]::Replace($meme, '\d+', $replacement)
  • নেট Regex গ্রন্থাগার একটি scriptblock ম্যাচের সামগ্রীর উপর, executes এবং PowerShell নম্বরে ধরনের স্ট্রিং কাস্ট, এবং প্রতিস্থাপন করতে পারি না iexভালো হয় eval()অন্য ভাষায়। এটি কেবল "2spooky" "+3"-> করেeval("2+3")
  • বাদে ... এটি ^অপারেটর বা অন্য কোনও সুবিধাজনক ক্ষয়ক্ষতি যেমন পরিচালনা করতে পারে না **, এটি কেবল [math]::Pow()গ্রন্থাগার কলটি ব্যবহার করতে পারে তাই সেই শাখাটি পরিচালনা করার জন্য একটি বড় ব্লক রয়েছে।
    • আপডেট হওয়া সংস্করণটি @ টিমমিডি থেকে একটি ধারণা চুরি করে এবং তার পরিবর্তে স্ট্রিং গুণ করে - "2*" * nযা হয়ে যায় "2*2*2*2*"এবং তারপরে +1পিছনে পিছনে অভিযোগের পরিবর্তে এক দ্বারা গুণ করে *
  • ব্যতীত ...। নেট ব্যাঙ্কারের রাউন্ডিং করে যা ডিফল্টরূপে নিকটতম সমান সংখ্যায় গোল হয় এবং 3/2 = 1 এর পরিবর্তে 3/2 = 2 কে এই চ্যালেঞ্জটি কাটানোর জন্য ডেকে আনে এবং এর অর্থ [math]::Truncate()। পরিবর্তে, আমি -replaceদশমিক বিন্দু এবং এর পরে যে কোনও কিছু ছাঁটাইতে ব্যবহার করে অক্ষরগুলি সংরক্ষণ করি।

পরীক্ষার কেস:

PS D:\> .\meme.ps1 2spooky4me +1
3spooky5me

PS D:\> .\meme.ps1 2spooky4me -1
1spooky3me

PS D:\> .\meme.ps1 2spooky4me *15
30spooky60me

PS D:\> .\meme.ps1 10spooky900me /5
2spooky180me

PS D:\> .\meme.ps1 idontunderstandememes3 /2
idontunderstandememes1

PS D:\> .\meme.ps1 "idontunderstandememes3" "/2"
idontunderstandememes1

PS D:\> .\meme.ps1 "notreallyafunnymeme" "*100"
notreallyafunnymeme

PS D:\> .\meme.ps1 "2spooky4me" "^3"
8spooky64me

PS D:\> .\meme.ps1 "some1meme2sequences3can4be5really6long7" "/2"
some0meme1sequences1can2be2really3long3

PS D:\> .\meme.ps1 2000000000000000000000000000000000000000000000000000000000000000000000000000000‌​000000000000000000000000000000000spooky4me /2
1E+78‌​0spooky2me

বিশেষ দ্রষ্টব্য। শেষ পরীক্ষায় নম্বরগুলি [BigInteger]স্বয়ংক্রিয়ভাবে টাইপ হয়ে যায় তবে তারা বৈজ্ঞানিক স্বরলিপিতে রেন্ডার হয়। ভাগ্যক্রমে, নক্ষত্রের মধ্যে যোগাযোগ করতে সক্ষম প্রতিটি পরিচিত জাতিটির যথেষ্ট বৈজ্ঞানিক বিকাশ রয়েছে যাতে সমস্যা ছাড়াই বৈজ্ঞানিক স্বরলিপি প্রক্রিয়া করতে সক্ষম হয়।


1
আপনি অন্যান্য জবাবগুলিতে দেখতে পারেন যে কীভাবে তারা কোডটি আচরণের পরীক্ষা করার জন্য একটি অপঠনযোগ্য গল্ফযুক্ত সংস্করণ এবং তারপরে একটি পৃথক অদৃশ্য সংস্করণ সরবরাহ করে। আপনার নিজের সাথে এটি করা উচিত (যথা, গল্ফযুক্ত সংস্করণে নতুন লাইনগুলি সরিয়ে দিন)।
jpmc26

কৃতিত্বের জন্য ধন্যবাদ, তবে আমার কৌশল নয় - আমি পাওয়ারশেল টিপস থ্রেড থেকে এটিকে টানলাম।
অ্যাডমবর্কবার্ক

স্পষ্টতই, আমি একটি মন্তব্য দিতে যথেষ্ট যত্ন, এবং অন্য কেউ আমার মন্তব্য upvote যথেষ্ট যত্নশীল। ;)
jpmc26

না, আমি বলেছিলাম আপনার একটি সম্পূর্ণ গল্ফ সংস্করণ এবং সম্পূর্ণরূপে অব্যাহত সংস্করণ থাকা উচিত। গল্ফযুক্তটির জন্য স্ক্রোলিংয়ের প্রয়োজন হবে। নিরপেক্ষ ব্যক্তিটি আপনার কাছে নেই তার চেয়ে বেশি পাঠযোগ্য হবে।
jpmc26

1
@ jpmc26 ঠিক আছে, আমি একটি অসম্পূর্ণ, মন্তব্য করা সংস্করণে সম্পাদনা করেছি।
টেসেল্ল্যাটিংহেকলার

3

বাশ + জিএনইউ কোর্টিলস, 144 বাইট

d=
u=$1,
for((i=0;i<${#u};i++)){ l=${u:i:1}
[[ "$l" =~ [0-9] ]]&&d=$d$l||{ [ -z $d ]||echo -n `bc<<<$d$2`&&{ [ $l != , ]&&echo -n $l; };d=; }
}

এটি অঙ্ক এবং অ-অঙ্কের মধ্যে পরিবর্তনকে দেখায়, এ কারণেই একটি এলোমেলোভাবে অবৈধ ইনপুট অক্ষর (কমা) ইনপুট স্ট্রিংয়ে সংযুক্ত করা হয়। এই কমাটি তখন আউটপুটটিতে উপেক্ষা করা হয়। ওপির সম্মেলনটি ঠিক সেই বাক্য গঠনটি অনুসরণ করে bcযার গণিত করতে এখানে ব্যবহৃত হয়।


@ টেসেল্লাটিংহেকলারের দ্বারা পাওয়ারশেল-সমাধানে আলোচনার কারণেই: আমার সমাধানে আপনি লাইন ব্রেকগুলি সেমিকোলনে প্রতিস্থাপন করে প্রোগ্রামটিকে একটি লাইনে অনুবাদ করতে পারেন, যা এর দৈর্ঘ্য পরিবর্তন করে না।
রেক্সকোটিটানস


2

আর, 163 বাইট

যে কোনও ব্যক্তি নিয়মিত প্রকাশ এবং স্ট্রিং প্রতিস্থাপন শিখছেন আর হিসাবে, এটি বেশ কঠিন চ্যালেঞ্জ হিসাবে প্রমাণিত proved বিশেষত সংখ্যার সাথে মিল থাকা সহজ তবে এর সাথে একাধিক বিকল্প ব্যবহার করার উপায় আমি খুঁজে পাইনি gsub। তদ্ব্যতীত, eval(parse(paste0(...অপারেশনগুলির মধ্যে স্যুইচ করার সবচেয়ে কার্যকর উপায় কিনা তা আমি জানি না । সম্ভবত- switchফাংশন এখানে আরও ভাল উপযুক্ত।

function(s,o){p=strsplit;y=p(gsub("\\d+","?",s),"?")[[1]];x=na.omit(as.integer(p(s,"[a-zA-Z]+")[[1]]));y[y=="?"]=floor(eval(parse(,,paste0("x",o))));cat(y,sep="")}

ব্যাখ্যা

f=function(s,o){
    p=strsplit                                    # alias for stringsplit    
    y=p(gsub("\\d+","?",s),"?")[[1]]              # substitute numbers with "?" and split into vector on "?"
    x=na.omit(as.integer(p(s,"[a-zA-Z]+")[[1]]))  # split at alphabetical char, return vector with numbers to be operated on
    y[y=="?"]=floor(eval(parse(,,paste0("x",o)))) # replace inserted "?" with vector of numbers operated on
    cat(y,sep="")                                 # print concatenated vector
}

আমি মনে করি আপনি যদি ম্যাচগুলিতে ক্লোসারের সাথে জিএসব ব্যবহার করেন তবে আপনি এক টন বাইট সংরক্ষণ করতে পারবেন যা আপনি আপনার মন্তব্যে ইঙ্গিত করেছিলেন। আরে এটি কীভাবে করা যায় তা আমি জানি না। গ্রোভিতে কীভাবে এটি করা যায় তা না পাওয়া পর্যন্ত আমি তার সাথে লড়াই করেছি; বেশ একটা গেম চেঞ্জার ছিল
ম্যাজিক অক্টোপাস উরন

2

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

x=(s)=>{var a=s.split(" ");return[...a[0]].map(x=>(!isNaN(x))?eval(x+a[1]):x).join``}

console.log(x("2spookie5me +1"));

Ungolfed:

x = (s) => {
  var a = s.split(" ");
  return [...a[0]].map(x => (!isNaN(x)) ? eval(x + a[1]) : x).join ``
}
console.log(x("2spookie5me +1"));

যে কেউ স্প্রেড অপারেটর ব্যবহার করে স্পেস বিভক্ত করতে পারি কিনা জানেন? এই এসস্প্লিট ("") থেকে; থেকে ["" ... গুলি]; কমপক্ষে ধারণাটি thats।
ব্লাদিমির রুইজ

আপনার যা দরকার তা না ()প্রয়োজন ল্যামডা যুক্তি প্রায়, আপনি না var, এবং আপনি ধনুর্বন্ধনী পরিবর্তে বাম বন্ধনী এবং কমা অপারেটর ব্যবহার করা উচিত এবংreturn
Cyoce

এছাড়াও, ^জাভাস্ক্রিপ্টের একটি বিশেষ ক্ষেত্রে এটি পরিবর্তে কিছুটা XORMath.pow
সানি পুন

2

গ্রোভি, 64 60 বাইট

{a,b->a.replaceAll(/\d+/,{Eval.me(it+b.replace("^","**"))})}

সংখ্যার সমস্ত দৃষ্টান্তকে এমন একটি ক্লোজারের সাথে প্রতিস্থাপন করে যা উত্তীর্ণ শব্দের অঙ্কের অংশগুলির ক্রিয়াকলাপটি মূল্যায়ন করে। যদি কোনও এক্সপোনেন্ট ফাংশনটি পাস হয় তবে এটি যথাযথ স্বরলিপি দিয়ে প্রতিস্থাপন করে। গ্রোভি ব্যবহারের সময় বিগইন্টিজার / বিগডিসিমাল রূপান্তরকে স্পষ্টভাবে পরিচালনা করে Eval.me()কারণ পার্সযুক্ত স্ট্রিং সম্ভাব্যভাবে 2^32-1সীমার বাইরে থাকতে পারে ।

ব্যাখ্যা

{a,b->...} - দুটি যুক্তি সহ বন্ধ।

a.replaceAll(/\d+/,{...}) - স্ট্রিংয়ে সমস্ত ডিজিট সিকোয়েন্স সন্ধান করুন এবং একটি বন্ধের সাথে প্রতিস্থাপন করুন।

{Eval.me(it+b.replace("^","**"))} - আরও সুনির্দিষ্টভাবে বলা যায়, প্রতিটি ম্যাচ দিয়ে অপারেশন যুক্ত হওয়া একটি ক্লোজার, তারপরে গ্রোভি কোড হিসাবে মূল্যায়ন করা হয়।

.replace("^","**")- প্রদত্ত ক্রিয়াকলাপে ^গ্রুভি এক্সপোঞ্জার অপারেটরের সাথে প্রথম উদাহরণটি প্রতিস্থাপন করুন **। যদি আপনি এটি পুরো সমীকরণের স্ট্রিংগুলির সাথে কাজ করতে চান যা এক্সপোনেন্ট ব্যবহার করে তবে replaceAll()পরিবর্তে +3 বাইট জরিমানার জন্য ব্যবহার করুন।

মজাদার দিক-নোট তাঁর বৈধ পরীক্ষার দৃশ্য:
(22348952345238905290858906209862398036spooky409552me, /200*4943^8-23939+((100/203)+600)


1

আরপিগ্রন , 39 বাইট

►x='%d+'§x'%D+'''Rx'%d+'''Rg'y'=y_}R

ব্যাখ্যা

►x='%d+'§x'%D+'''Rx'%d+'''Rg'y'=y_}R
►                                       # Spaceless segment.
 x=                                     # Assign the top value of the stack '[+*/-]\d+' 
   '$d+'§                         }R     # Replace everything in the pattern %d+ (all numbers) based on an anonymous function 
         x'%D+'''R                      # Replace all Non-digits in the modifer with nothing, leaving just the second argument for the operator.
                  x'%d+'''R             # Snip all digits, separating our operator from our digits such that digit operator exists in the stack.
                           g'y'=        # Grab the function that is represented by the top of the stack (the operator in this case)
                                y       # Run it
                                 _      # Floor the result. 

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

অনলাইনে চেষ্টা করে দেখুন!


0

পার্ল 6, 111 বাইট

{/(\w+)\s(<[+\-*/^]>)(\d+)/&&my \b=+$2;my \o=(*+b,*-b,* *b,*div b,* **b)[index "+-*/^",$1];$0.subst(/\d+/,o):g}

দুর্ভাগ্যক্রমে EVALডিফল্টরূপে অক্ষম। এছাড়াও, আপনাকে divপূর্ণসংখ্যা বিভাগের জন্য ব্যবহার করতে হবে ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.