আমি <3 শর্তসাপেক্ষে


11

আপনি আপনার কোডটিতে প্রচুর দীর্ঘ, বিরক্তিকর শর্তসাপেক্ষে শেষ করেছেন:

if flag == 1:

while have != needed:

if type == 7:

এগুলি তাদের আরও স্নেহযোগ্য <3শর্তাবলীর প্রতিরূপে রূপান্তরিত হতে পারে :

if abs(flag - 1) + 2 <3:

while 3 - abs(have - needed) <3:

if 2 + abs(type - 7) <3:

কার্য

আপনার কাজটি শর্তসাপেক্ষে নেওয়া এবং এটি শর্তাবলী করা <3। একমাত্র ব্যবধান যে বিষয়টি গুরুত্বপূর্ণ তা হ'ল <এবং এর মধ্যে কোনওটিই নেই 3

Conditionals কে দুই পারেন seperated এক্সপ্রেশন হতে হবে ==, !=, >, <, >=বা <=
এক্সপ্রেশনগুলিতে কেবল সংযোজন, বিয়োগ, আনারি নেগেটিশন ( -something) থাকবে, যেখানে প্রতিটি ভেরিয়েবল বা সংখ্যার আগে একটি +বা তার -আগে রয়েছে (প্রথমটি বাদে যার কিছুই নেই বা এর -আগে নেই )।
নম্বরগুলি হবে [0-9]+, এবং ভেরিয়েবলগুলি হবে [a-z]+। যদি উত্তরটি ব্যবহারের প্রয়োজন হয় |x|(এর নিখুঁত মান x) তবে abs()ফাংশনটি ব্যবহার করুন । আপনি ধরে নিতে পারেন যে সমস্ত ভেরিয়েবলগুলি পূর্ণসংখ্যা এবং ইনপুটটিতে সমস্ত সংখ্যার ধ্রুবক <1000 হয়।

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

যদি ইনপুটটির কোনও ভেরিয়েবলের কোনও মানের আউটপুট না থাকে তবে এমন শর্তটি আউটপুট করুন যা সর্বদা মিথ্যা, তবে এখনও শর্তাবলী <3

চ্যালেঞ্জের অংশটি কীভাবে এটি করতে হবে তা নির্ধারণ করছে, তবে have != neededউপরের পদক্ষেপগুলি এখানে :

have != needed
have - needed != 0
abs(have - needed) > 0
-abs(have - needed) < 0
3 - abs(have - needed) <3

স্কোরিং

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

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

(দ্রষ্টব্য, এই আউটপুটগুলি কেবলমাত্র আউটপুট নয়, তবে আমি সেগুলি সহজ করার চেষ্টা করেছি))

flag == 1
abs(flag - 1) + 2 <3

have != needed
3 - abs(have - needed) <3

type == 7
2 + abs(type - 7) <3

x > y
3 - x + y <3

x + 5 < -y
x + 8 + y <3

x + 6 <= y
x + 8 - y <3

-x >= y + 3
x + y + 5 <3

x < x
3 <3
# Unsimplified; both would be valid outputs.
x - x + 3 <3

ইনপুট টোকেনের মধ্যে কি সর্বদা এক স্থান থাকে?
ডুরকনব

@ ডুরকনব নং। 0 বা 1 স্পেস থাকবে।
আরটিয়ার

উত্তর:


3

রেটিনা , 95 বাইট

<=
<1+
>=
>-1+
(.*)(.=)(.*)
$2abs($1-($3))
==
2+
!=
3-
(.*)>(.*)
$2<$1
(.*)<(.*)
$1-($2)+3
$
<3

এটি অনলাইন চেষ্টা করুন!

বরং একটি নির্লজ্জ সমাধান, তবে আমি কোনও উন্নতি করতে সক্ষম হইনি।

এটি কেবল প্রতিস্থাপনের একটি সিরিজ:

<=
<1+
>=
>-1+

এর x <= yসাথে x < 1 + yএবং এর x >= yসাথে প্রতিস্থাপন করে "বা সমান" তুলনা থেকে মুক্তি পান x > -1 + y

(.*)(.=)(.*)
$2abs($1-($3))

এর x == yসাথে ==abs(x - y)এবং x != yসাথে প্রতিস্থাপন করুন !=abs(x - y)

==
2+
!=
3-

প্রতিস্থাপন ==সঙ্গে 2+এবং !=সঙ্গে 3-, যাতে সামগ্রিক প্রতিস্থাপন হয়ে x == y2 + abs(x - y)এবং x != y3 - abs(x - y)

(.*)>(.*)
$2<$1

এর x > yসাথে প্রতিস্থাপন করে অবশিষ্ট অসমতার দিককে সাধারণ করুন y < x

(.*)<(.*)
$1-($2)+3

x < yসঙ্গে প্রতিস্থাপন x - y + 3

$
<3

স্ট্রিংয়ের শেষে একটি হৃদয় যুক্ত করুন।

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