এটি কি নিজের একটি সাবস্ট্রিং?


21

একটি স্ট্রিং দেওয়া হয়েছে, স্ট্রিংটি প্রোগ্রামের উত্স কোডের একটি স্ট্রিং কিনা তা ফিরিয়ে দিন।

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

এটি একটি তাই সংক্ষিপ্ততম কোড জয়!

একটি উদাহরণ

আপনার উত্স কোডটি যদি হয় তবে print(input() = False)এটির জন্য সত্য nt(iকিন্তু মিথ্যাটির জন্য প্রত্যাবর্তন করা উচিত tupn



2
হ্যাঁ, বেশিরভাগ চ্যালেঞ্জের মতো @ টোটালিহুমান।


10
@ স্ট্যানস্ট্রাম এটি নকলকে নির্দেশ করা নয়, এটি সম্পর্কিত চ্যালেঞ্জগুলি দেখাতে পারে যা লোকেরা আগ্রহী এবং ডান দিকে সাইডবারে তাদের প্রদর্শন করতে পারে।
সম্পূর্ণরূপে

1
ইনপুট কি খালি থাকতে পারে? (আসলে, কোডটি খালি থাকতে পারে?)
লিন

উত্তর:



6

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

f=s=>('f='+f).includes(s)

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

আমি ব্যক্তিগতভাবে এটির ভক্ত নই, তবে এটি অনুমোদিত

বিকল্প (অবৈধ?) সমাধান, 19 বাইট

এটি ইনজেক্টটিকে একটি রেজেস হিসাবে গ্রহণ করে।

f=s=>s.test('f='+f)

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


এটি নিজেই পড়ে না?
অ্যাডম


সুস্পষ্টভাবে উল্লেখ করার উদ্দেশ্য কী (Node.js)? এটি ব্রাউজারগুলিতেও কাজ করে না?

@ পাইপ্রেটবে ক্রমে প্রত্যাশার মতো কাজ করে।
স্টেইনবার্গ

1
আপনি ছেলেরা এগিয়ে চিন্তা করছেন, এটি কেবল টিআইও টেম্পলেট থেকে। : পি
সম্পূর্ণমানবিক

5

জাভা 8, 124 112 বাইট (ফাংশন)

p->{String s="p->{String s=%c%s%1$c;return s.format(s,34,s).contains(p);}";return s.format(s,34,s).contains(p);}

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


পরিবর্তে এটি সম্পূর্ণ প্রোগ্রাম হিসাবে রয়েছে (পিপিসিজিতে ফাংশনগুলির অনুমতি দেওয়ার একটি কারণ দেখার জন্য, কারণ কিছু ভাষার মতো জাভা- পুরো প্রোগ্রামগুলির জন্য খুব ভার্জোজ বাধ্যতামূলক বয়লারপ্লেট কোড প্রয়োজন)।

জাভা 8, 226 214 বাইট (সম্পূর্ণ প্রোগ্রাম)

interface M{static void main(String[]a){String s="interface M{static void main(String[]a){String s=%c%s%1$c;System.out.print(s.format(s,34,s).contains(a[0]));}}";System.out.print(s.format(s,34,s).contains(a[0]));}}

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


ব্যাখ্যা:

  • String sঅবিন্যস্ত সোর্স কোড রয়েছে।
  • %sএই স্ট্রিংটি নিজের সাথে ইনপুট করতে ব্যবহৃত হয় s.format(...)
  • %c, %1$cএবং 34এগুলি ডাবল-কোট ফর্ম্যাট করতে ব্যবহৃত হয়।
  • s.format(s,34,s) সব একসাথে রাখে।

এবং তারপরে .contains(...)এই উত্স কোডটিতে প্রদত্ত ইনপুট রয়েছে কিনা তা পরীক্ষা করতে ব্যবহৃত হয়।


আমি যখন "অনলাইনে এটি চেষ্টা করি" তখন এটি আমাকে সমস্ত স্ট্রিংয়ের জন্য সত্য দেয় ।
মাইকেলK

1
@ মিশেলকর্ণার আমার পক্ষে নয় ... আপনি কি নিশ্চিত যে প্রতিবার যুক্তি যুক্ত করবেন না? শুধুমাত্র একটি যুক্তি ব্যবহার করা হয়। প্রতিবার নতুন পরীক্ষা করার সময় আপনাকে আর্গুমেন্ট পরিবর্তন করে প্রোগ্রামটি চালাতে হবে।
অলিভিয়ার

@ অলিভিয়ারগ্রোগোয়ার আপনি সঠিক, আমি টিআইও পৃষ্ঠাটি ভুল ব্যবহার করেছি। ধন্যবাদ. :)
মাইকেলেকে

3

বাশ, 43 , 28 বাইট

[[ $BASH_COMMAND = *"$1"* ]]

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


আমি বাশকে চিনি না, তবে কি আরও অনেক সাদা জায়গা সরিয়ে আরও গল্ফ করা যেতে পারে?
এয়ারড কোয়েনেরিংহিং

@ Cairdcoinheringaahing আমার মনে হয় না, typesetএটি এএএএফসিটির মতো করে ফর্ম্যাট করে। এটি অনলাইন চেষ্টা করুন!
এরিক আউটগল্ফার

তবে অন্য কৌশলটি ব্যবহার করে সম্ভবত উন্নতি করা যেতে পারে
নাহুয়েল ফিউইউল

সবেমাত্র অন্য একটি সমাধান খুঁজে পেয়েছে
নাহুয়েল ফিউইলুল


2

হাস্কেল , 92 বাইট

import Data.List;f s=isInfixOf s$(++)<*>show$"import Data.List;f s=isInfixOf s$(++)<*>show$"

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



2

কিউবিআইসি , 28 বাইট

?instr(B+B,;)#?instr(B+B,;)#

এই ইনপুটটি উত্সটির একটি সাবস্ট্রিং না হলে 0 টি প্রিন্ট করে এবং এক্সটি অন্যথায় যেখানে স্ট্রিংয়ের (প্রথম) সূচক হয়।

ব্যাখ্যা

Latter part:
#?instr(B+B,;)#   Define a string literal B$ with a copy of the source

First part:
?                 PRINT
 instr(   , )     the index of
           ;          the cmd line parameter A$
       B+B            in B$ concatenated with itself

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


কি Aএই প্রেক্ষাপটে?
16 ই

@ কায়ারডকয়েনেরিংআহ আমার পক্ষ থেকে একটি সামান্য ত্রুটি, হওয়া উচিত ছিল Bএবং একটি ব্যাখ্যা যুক্ত করা উচিত।
স্টেইনবার্গ

2

জেলি , 10 বাইট

“;⁾vṾƓẇ”vṾ

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

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

“;⁾vṾƓẇ”vṾ  Main link. No arguments.

“;⁾vṾƓẇ”    Set the left argument and the return value to ';⁾vṾƓẇ'.
         Ṿ  Uneval; yield '“;⁾vṾƓẇ”'.
        v   Dyadic eval; eval ';⁾vṾƓẇ' with argument '“;⁾vṾƓẇ”'.

  ⁾vṾ       Yield 'vṾ'.
 ;          Append it to '“;⁾vṾƓẇ”', yielding the source code.
     Ɠ      Read a string from STDIN.
      ẇ     Check if it's a substring of the source code.

1

জুলিয়া, 72 বাইট

আমি এখন বুঝতে পেরেছি যে লোকেরা যখন বলে যে কুইন সমস্যাগুলি কেবল ক্লাসিক কুইনে পরিবর্তিত হয়।

x="~y=contains\"x=\$(repr(x));\$x\",y)";~y=contains("x=$(repr(x));$x",y)

ব্যাখ্যা

#Defines x to be the next line of the source, with the help of escaping characters
x="~y=contains\"x=\$(repr(x));\$x\",y)"; 
#Interpolates together a comparison string, including repr(x), the re-escaped from of x, and x itself, for comparison. 
~y=contains("x=$(repr(x));$x",y)


0

05 এ বি 1 ই , 17 বাইট

0"D34çýIå"D34çýIå

যোগ করে ডিফল্ট পরিবর্তন ।0"D34çý"D34çý

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

ব্যাখ্যা:

0                    # Push 0 to the stack
                     #  STACK: [0]
 "D34çýIå"           # Push the string 'D34çýIå' to the stack
                     #  STACK: [0, 'D34çýIå']
          D          # Duplicate this string
                     #  STACK: [0, 'D34çýIå', 'D34çýIå']
           34ç       # Push '"' to the stack
                     #  STACK: [0, 'D34çýIå', 'D34çýIå', '"']
              ý      # Join the stack by this '"' delimiter
                     #  STACK: ['0"D34çýIå"D34çýIå']
               I     # Take the input
                     #  STACK: ['0"D34çýIå"D34çýIå', 'Iå"D']
                å    # Check if it's a substring of the source code
                     #  STACK [1]
                     # (Output the top of the stack implicitly)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.