রেজেক্স, কাগজ, কাঁচি, টিকটিকি, স্পক


81

ওয়ার্ম আপ: রেজেক্স, পেপার, কাঁচি

কিছু খুব সংক্ষিপ্ত সমাধানের উপস্থিতি বুঝতে পেরে আমি এই চ্যালেঞ্জটিই মূলত পোস্ট করতে চেয়েছিলাম। তবুও, নীচের আসল চ্যালেঞ্জের জন্য প্রস্তুতি নিয়ে ভাবা একটি আকর্ষণীয় সমস্যা হতে পারে।

আর , পি এবং এস জাতীয় তিনটি রেজেক্স লিখুন যে তারা একে অপরের সাথে একটি চক্রাকার রক, পেপার, কাঁচি ফ্যাশনে মেলে। বিশেষ করে, আর সাথে মেলে এস , এস ম্যাচ পি এবং পি মিলে যায় আর কিন্তু আর নেই মেলে পি , এস না মেলে আর এবং পি মিলছে না এস । এখানে একটি সহজ টেবিল:

Regex   Matches   Doesn't match
R       S         P
P       R         S
S       P         R

আর , পি এবং এস নিজের সাথে অন্য কোনও ইনপুটগুলিতে কী করেন তা বিবেচ্য নয়।

এখানে, মিলের অর্থ হ'ল ইনপুটটির কিছু (সম্ভবত খালি) স্ট্রিংয়ের সাথে মিল রয়েছে। ম্যাচের পুরো ইনপুটটি কভার করার দরকার নেই।

চ্যালেঞ্জ: রেজেক্স, পেপার, কাঁচি, টিকটিকি, স্পক

এই চ্যালেঞ্জের জন্য, আপনি আরপিএস ভেরিয়েন্ট রক, পেপার, কাঁচি, টিকটিকি, স্পক ( দ্য বিগ ব্যাং থিওরি দ্বারা জনপ্রিয় ) এর উপর ভিত্তি করে উপরের সমস্যার আরও শক্ত সংস্করণটি সমাধান করবেন । আরপিএসএলভিতে, পাঁচটি পৃথক চিহ্ন রয়েছে, যা একে অপরকে দুটি চক্রের কাছে পরাজিত করে:

  • রক → কাঁচি → টিকটিকি → কাগজ → স্পোক → রক
  • রক → টিকটিকি → স্পক → কাঁচি → কাগজ → রক

আপনার পাঁচটি রেজেক্সগুলি R , P , S , L এবং V লিখতে হবে যা একে অন্যকে ইনপুট হিসাবে দেওয়ার সময় এই কাঠামোর নকল করে। এখানে সম্পর্কিত টেবিল:

Regex   Matches   Doesn't match
R       L, S      V, P
L       V, P      S, R
V       S, R      P, L
S       P, L      R, V
P       R, V      L, S

শুধু থেকে পরিষ্কার হতে, আপনি উচিত না স্ট্রিং মেলে R, Pইত্যাদি, কিন্তু অন্যান্য regexes। যেমন যদি আপনার Regex আর হয় ^\w$উদাহরণস্বরূপ, তারপর পি এবং ভী স্ট্রিং মেলে আছে ^\w$, যেহেতু এস এবং এল না করা উচিত।

আবার, মিলের অর্থ হ'ল ইনপুটটির অন্তত একটি (সম্ভবত খালি) স্ট্রিংয়ের সাথে মিল রয়েছে। ম্যাচের পুরো ইনপুটটি কভার করার দরকার নেই। উদাহরণস্বরূপ \b(শব্দের সীমানা) ম্যাচগুলি hello(শুরুতে এবং শেষে), তবে এটি মেলে না (^,^)

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

/regex/অন্যকে ইনপুট হিসাবে দেওয়ার সময় ডিলিমিটারগুলি (যেমন ) রেজিজেলে অন্তর্ভুক্ত থাকে না এবং আপনি রেজিজের বাইরে থাকা সংশোধক ব্যবহার করতে পারবেন না। কিছু স্বাদ এখনও আপনাকে ইনলাইন সিনট্যাক্সের মতো মডিফায়ার ব্যবহার করতে দেয় (?s)

আপনার স্কোরটি বাইটে পাঁচটি রেজেক্সসের দৈর্ঘ্যের যোগফল। স্বল্পতা ভালো.

এটি সক্রিয় আউট এটি অনেক বেশি সহজ হবে একটি এই সমস্যার তুলনায় এটি প্রথমে মনে হতে পারে জন্য কাজ সমাধান, কিন্তু আমি আশা করি যে একটি সন্তোষজনক সমাধান খোঁজার বেশ চতুর হয়।


, কি বলে, আর এর পুরো রেজেক্স বা এস এর একটি স্ট্রিংয়ের সাথে মিল রাখতে হবে, তবে এটি P বা V এর কোন সাবস্ট্রিংয়ের সাথে মেলে না?
Okx

@ ওকএক্স "ম্যাচটির অর্থ হ'ল ইনপুটটির অন্তত একটি (সম্ভবত খালি) স্ট্রিংয়ের সাথে মিল রয়েছে The ম্যাচের পুরো ইনপুটটি coverাকতে হবে না For উদাহরণস্বরূপ \b(শব্দের সীমানা) ম্যাচগুলি hello(শুরুতে এবং শেষে) তবে এটি মেলে না (^,^)। "
মার্টিন ইন্ডার

1
সম্ভবত কোনও রেজেক্স নিজেই মেলে কিনা তাতে কিছু যায় আসে না?
ব্রিলিয়ান্ড

@ ব্রিলিয়ান্ড সঠিক
মার্টিন ইন্ডার

1
দুর্দান্ত ধাঁধা আমি এখানে একটি ইন্টারেক্টিভ সংস্করণ তৈরি করেছি, যদি কেউ আগ্রহী: shark.fish/rock-paper-scissors
shark.dp

উত্তর:


45

পিসিআরই। নেট, 35 32 বাইট

-3 বাইটস মার্টিন ইন্ডারকে ধন্যবাদ

রক:

([*?]$)

কাগজ:

[)$]$+

কাঁচি:

[+?]$.*

টিকটিকির:

[+$]$.?

Spock:

[*)]$

এখানে ধারণাটি হ'ল অন্যান্য রেগেক্সগুলির শেষে অক্ষরগুলি মিলে যায় যা সংরক্ষিত রেজেক্স অক্ষরগুলি সংরক্ষণ করা হয়, তবে চরিত্র শ্রেণীর অভ্যন্তরে যেমন আচরণ করা বন্ধ করে দেয়।


1
ঠিক আছে, আপনি জিতলেন: পি
ইটিএইচ প্রডাকশনগুলি

3
ইওএল "$" এর পরে জিনিসগুলি রাখার স্নেহপূর্ণ ব্যবহার যা সক্রিয়ভাবে ব্যবহার করার সময় উপেক্ষা করা হয় এবং যখন প্যাসিভভাবে ব্যবহৃত হয় তখন ম্যাচিয়েলে যায়
স্টিলেজ

44

পিসিআরই, 15 14 বাইট

রক:
B

কাগজ:
\b$

কাঁচি:
b|B.

টিকটিকির:
\B.

Spock:
^\w


4
খুব চিত্তাকর্ষক.
এরিক ডুমিনিল

অপরাজেয়! আমি রক = Q(এক 14 বি সমাধান লিজার্ড = \ \ কিউ \ with এর সাথে উপস্থিত রয়েছে, তারপরে বাকীটি আপনার মতো yours
জয়তে

40

কোনও অভিনব বৈশিষ্ট্য নেই, 35 30 বাইট

5 বাইট নিল এর ধারণা যা ব্যবহার করে দ্বারা সংরক্ষিত ]কোন প্রয়োজন \

এটি পাইথন reমডিউল সহ উদাহরণস্বরূপ কাজ করে ।

R='[SLR]]'
P='[RVP]]'
S='[PLS]]'
L='[PVL]]'
V='[SRV]]'

এটি ]কোনও চিঠির আগে অনুসন্ধান করে যা এটি নির্দেশ করে যে এটি।

পূর্ববর্তী সংস্করণ R='\[[RSL]'ইত্যাদি ব্যবহৃত

৪০ স্কোর নিয়ে আগের চেষ্টাটি ব্যবহার করা ছিল R='[SL]x|Rx'ইত্যাদি was


1
সবকিছুকে বিপরীত করে 5 বাইট সংরক্ষণ করুন: R='[LSR]]'ইত্যাদি
নীল

@ নীল এটি একটি দুর্দান্ত উন্নতি, ধন্যবাদ!
খ্রিস্টান সিভর্স

This works with python's reঠিক আছে, পাইথন সম্ভবত তখন শিরোলেখ হওয়া উচিত
বিড়াল

1
@ কেট আমিও "উদাহরণস্বরূপ" লিখেছি, পুরো বাক্যটি কেবল কংক্রিটের জন্য যা আমি আসলে চেষ্টা করেছি। আমি অনুমান করি যে আমি অন্য কয়েকজনের মতো পসিক্স বলতে পারি, তবে আমি মনে করি যে আমার শিরোনামটি বেশ সঠিক।
খ্রিস্টান সিভর্স

26

পিসিআরই, 20 19

শিলা

W

কাগজ

^\w

কাঁচি

^\W

Spock

w?\x57$

টিকটিকি

[w]W?


8

জাভাস্ক্রিপ্ট, 45 বাইট

আরেকটি তুচ্ছ সমাধান।

R:
^R|^.[SL]
P:
^P|^.[RV]
S:
^S|^.[PL]
L:
^L|^.[PV]
V:
^V|^.[SR]

ওহ ঠিক বুঝতে পেরেছি যে আমার উত্তরটি আপনার দীর্ঘ / অনুরূপ সংস্করণ, আমি কি এটি মুছতে চাই?
TheLethalCoder

4
@ দ্য লেথাল কোডার সমস্ত উত্তর বর্তমানে একে অপরের আরও দীর্ঘ / সংক্ষিপ্ত সংস্করণ: পি
ডিজাইমা

1
আমি মনে করি হা ...
TheLethalCoder

5

পসিক্স, 50 45 বাইট

Rock
.{5}RP?V?
Paper
.{5}PS?L?
Scissors
.{5}SR?V?
Lizard
.{5}LR?S?
Vulcan (Spock)
.{5}VP?L?

আরও ছোট করা যেতে পারে তবে (matches এর পরে ম্যাচগুলি লুকিয়ে রাখুন) কৌশলটি ব্যবহৃত হয়ে গেছে, তাই আমি অন্য কোনও উপায় খুঁজছি

মিলের সময় প্রতিটি স্ট্রিংয়ের প্রথম 5 টি অক্ষর উপেক্ষা করা হয়। সুতরাং কার্যকর লক্ষ্য স্ট্রিংটি কেবল এক্স? ওয়াই? তাদের কারও কোনও ডাবল অক্ষর নেই কারণ "?" একটি সাধারণ চর, সুতরাং যখন রেগেক্স হিসাবে ব্যবহৃত হয় তখন শেষ 4 টি অক্ষর (নাল স্ট্রিং) মেলে। সুতরাং নিদর্শনগুলি "লক্ষ্য বর্ণের পরে 5 টি অক্ষর অন্তর্ভুক্ত" এ নেমে আসে: অর্থাত্ টার্গেটের 6-9 অক্ষর অবশ্যই লক্ষ্য বর্ণটি অন্তর্ভুক্ত করতে হবে (প্রতিটি স্ট্রিংয়ের 5 ম চর)

আপডেট: এখন নীচে 35 বাইট সংস্করণ!


আমি সবসময় ভেবেছিলাম ভি আসলে ভি ভি আলকারের পক্ষে নয় তবে ভলকান সালামের আকারটি উপস্থাপন করতে (যা আপনি আরপিএসএলভি ব্যক্তিগতভাবে খেলতে গিয়ে স্পকের প্রতিনিধিত্ব করতে যে হাতের অঙ্গভঙ্গি ব্যবহার করেন)।
মার্টিন ইন্ডার

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

পসিক্স স্ট্রিংয়ের শুরুতে স্বয়ংক্রিয়ভাবে ম্যাচটি অ্যাঙ্কর করে? অন্যথায়, আপনি এই কমাগুলি বাদ দিতে পারেন না?
মার্টিন ইন্ডার

আমি মনে করি এটির পসিক্স। পার্ক হতে পারে। তবে হ্যাঁ, দুর্দান্ত দাগ! ৫ টি চর কম!
স্টাইলিজ

4
জেলির সাথে প্রতিযোগিতা করার দরকার নেই। আপনার পছন্দ মতো একটি ভাষা বেছে নিন এবং নিজে উপভোগ করুন। :)
মার্টিন ইন্ডার

3

পিসিআরই, 65 বাইট

এটি সত্যিই তুচ্ছ সমাধান - এবং মোটেই চালাক নয় - তবে আমি এটি গল্ফ করার চেষ্টা করব।

ভী:

(?#V).+[SR]\)

এল:

(?#L).+[PV]\)

এস

(?#S).+[PL]\)

পি:

(?#P).+[RV]\)

আর:

(?#R).+[SL]\)

মূলত, প্রতিটি রেজেক্সের একটি মন্তব্যের আকারে একটি 'আইডেন্টিফায়ার' থাকে, যা অন্যান্য রেজেক্সকে এটি মিলে যায় কিনা তা জানিয়ে দেয়।


3

.NET, 50 বাইট

ক্রম তারা R, P, S, L, V

[^R]\^[SL]
[^P]\^[RV]
[^S]\^[PL]
[^L]\^[PV]
[^V]\^[SR]

[^R]অন্যান্য এক্সপ্রেশনগুলির প্রত্যেকটিতে সনাক্তকারী গোষ্ঠী (উদাহরণস্বরূপ ) অনুসন্ধান করে কাজ করে।

এক্সপ্রেশন ^R|\^[SL]বা অনুরূপ, এর সাথে পরিবর্তনগুলি কাজ করা বলে মনে হচ্ছে তবে এটি @ ডিজাইমার উত্তরের সাথে কিছুটা মিল, যদিও এটি 45 বাইটে পেয়ে যাবে।


3

ভ্যানিলা আর, 40 টি অক্ষর

সর্বাধিক সংক্ষিপ্ত বা মার্জিত সমাধান নয় তবে এটি একটি মনোমুগ্ধকর অর্ধ-শব্দার্থক চাক্ষুষ কাঠামো আছে!

[^r][sl]
[^p][vr]
[^s][lp]
[^l][pv]
[^v][rs]

রক মারধর করে কাঁচি বা টিকটিকি
কাগজ পেটায় ভলকান বা রক
কাঁচি মারে টিকটিকি বা কাগজ
টিকটিকি পেটাকে বা ভলকান
ভলকানকে রক বা কাঁচি মারধর করে


2

পসিক্স, 35 বাইট

Rock
R?^[LS]
Paper
P?^[RV]
Scissors
S?^[LP]
Lizard
L?^[PV]
Vulcan (Spock)
V?^[RS]

শুরু / শেষের চিহ্নের পিছনে "গোপন" করার সম্পূর্ণ ভিন্ন উপায়, সুতরাং আমি এটি সম্পর্কে ঠিকই অনুভব করি :) কারণ আমি শুরু করার সাথে মিলে যাচ্ছি "?" অন্যভাবে করা থাকলে সর্বদা চিঠি এবং শেষের মধ্যে যেতে হবে।

আমার 1 ম সমাধানের চেয়ে 10 বাইট কম, এবং ধারণাগতভাবে সহজ যা আমার কাছে বোনাস।

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