শব্দগুলি isomorphs কিনা তা পরীক্ষা করুন


63

অক্ষরের পুনরাবৃত্তির একই প্যাটার্ন থাকলে দুটি শব্দ isomorphs হয় । উদাহরণস্বরূপ, উভয় ESTATEএবং DUELEDপ্যাটার্ন আছেabcdca

ESTATE
DUELED

abcdca

কারণ 1 এবং 6 বর্ণগুলি একই, 3 এবং 5 অক্ষর একই এবং আরও কিছু নয়। এই অর্থ শব্দ ম্যাচিং সঙ্গে একটি প্রতিকল্পন সাইফার দ্বারা সম্পর্কিত হয়, এখানে E <-> D, S <-> U, T <-> E, A <-> L

কোড লিখুন যাতে দুটি শব্দ লাগে এবং তারা আইসমোর্ফ কিনা তা যাচাই করে। সবচেয়ে কম বাইট জেতা

ইনপুট: বড় বড় অক্ষরের দুটি খালি খালি স্ট্রিং A..Z। আপনি যদি চান তবে এগুলি দুটি স্ট্রিংয়ের সংগ্রহ হিসাবে বা একটি বিভাজকের সাথে একক স্ট্রিং হিসাবে নিতে পারেন।

আউটপুট: জোড়গুলির জন্য একটি ধারাবাহিক সত্যবাদী মান যা আইসোমর্ফগুলি এবং যদি না হয় তবে একটি সামঞ্জস্যপূর্ণ ফ্যালাসি মান । বিভিন্ন দৈর্ঘ্যের স্ট্রিংগুলি বৈধ ইনপুট যা কখনও আইসমোর্ফ হয় না।

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

সত্য:

ESTATE DUELED
DUELED ESTATE
XXX YYY
CBAABC DEFFED
RAMBUNCTIOUSLY THERMODYNAMICS
DISCRIMINATIVE SIMPLIFICATION

মিথ্যা:

SEE SAW
ANTS PANTS
BANANA SERENE
BANANA SENSES
AB CC
XXY XYY
ABCBACCBA ABCBACCAB
ABAB CD

আপনি দরকারী বলে মনে করেন আরও পরীক্ষার কেস যুক্ত করতে নিঃসঙ্কোচে।

লিডারবোর্ড

নিয়মিত লিডারবোর্ড এবং ভাষার দ্বারা বিজয়ীদের একটি সংক্ষিপ্ত বিবরণ উভয়ই তৈরি করতে এখানে একটি স্ট্যাক স্নিপেট।

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

# Language Name, N bytes

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

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


দুটি ইনপুটগুলির দৈর্ঘ্যগুলি কি একইরূপে গ্যারান্টিযুক্ত?
অপ্টিমাইজার 21

@ অপ্টিমাইজার না, দৈর্ঘ্য আলাদা হতে পারে।
xnor

@ জাকুব না, আপনার কোডটি কোনও দৈর্ঘ্যের ইনপুটগুলির সাথে তাত্ত্বিকভাবে কাজ করা উচিত। এটি ঠিক আছে যদিও মেমরির ওভারফ্লো বা স্ট্যাক গভীরতার মতো ইস্যুগুলির কারণে হার্ডওয়্যারে বিশাল ইনপুট ব্যর্থ হয়।
xnor

ঠিক আছে তাহলে আমি আমার উত্তর মুছে ফেলব।
জাকুব

গুরুত্বপূর্ণ পরীক্ষার কেস: ABAB CD(জিপ-মত পদ্ধতির জন্য)
Sp3000

উত্তর:


95

জে, 4 বাইট

-:&=

ব্যবহার

   'THERMODYNAMICS' (-:&=) 'RAMBUNCTIOUSLY'  NB. parens are optional
1 

ব্যাখ্যা

  • = 1 টি যুক্তির সাহায্যে ইনপুট এবং তার নুরের উপাদানগুলির তুলনা করে একটি সাম্যতা-সারণী তৈরি করা হয়।

    ='ESTATE' gives the binary matrix
    
    = | E S T A T E    
    --+------------
    E | 1 0 0 0 0 1
    S | 0 1 0 0 0 0
    T | 0 0 1 0 1 0
    A | 0 0 0 1 0 0
    
  • -:2 টি যুক্তি সহ তাদের সমতা পরীক্ষা করে (যেমনটি ==সাধারণত হয়)। এটি বিভিন্ন আকারের ম্যাট্রিকগুলি (বা এমনকি বিভিন্ন ধরণের) জন্যও কাজ করে।

  • f&gউভয় ইনপুটকে আলাদাভাবে জি প্রয়োগ করে এবং তারপরে দুটি ফলাফলের সাথে একসাথে প্রয়োগ করা হয় x f&g y == f(g(x), g(y))

  • সুতরাং আমাদের ক্ষেত্রে আমরা দুটি সমতা-সারণী তুলনা করি।

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


2
একটি আকর্ষণীয় এবং মার্জিত পদ্ধতির। এর সমতুল্য &না হলে আপনি কে-তে সবচেয়ে কাছের জিনিসটি করতে পারেন সম্ভবত ~/{x=/:x}'এটি বেশ ভাল।
জন

17
যীশু। এটি কোডগল্ফ হলের খ্যাতির প্রার্থী হতে হবে।
ব্রায়ান গর্ডন

বাহ, শ্রেণিবিন্যাসের =ঘটনা গণনা ব্যতীত অন্য কোনও ব্যবহারের আশা করেনি ।
মাইল মাইল

37

কে, 5 বাইট

এটি কে একটি আনন্দদায়ক মার্জিত সমাধান আছে!

~/=:'

"গোষ্ঠী" অপারেটর (মোনাডিক =) শব্দের আইসোমর্ফিিজমের জন্য আমরা স্বাক্ষরটি সুনির্দিষ্টভাবে তৈরি করে; ভেক্টরের প্রতিটি উপাদান সূচকের ভেক্টর সংগ্রহ করা, উপস্থিত গ্রুপ অনুসারে সাজানো:

  ="ABBAC"
(0 3
 1 2
 ,4)

  ="DCCDF"
(0 3
 1 2
 ,4)

ভেক্টর হিসাবে একটি জোড় স্ট্রিং নেওয়ার জন্য, আমাদের কেবল প্রতিটি উপাদানগুলিতে গ্রুপ প্রয়োগ করতে হবে ( =:') এবং তারপরে ~গভীর-সাম্যতা অপারেটর "ম্যাচ" ( ) দিয়ে হ্রাস করতে হবে :

  ~/=:'("RAMBUNCTIOUSLY";"THERMODYNAMICS")
1
  ~/=:'("BANANA";"SERENE")
0

15

পাইথন 2, 41 বাইট

f=lambda a,b:map(a.find,a)==map(b.find,b)

4
এই সমাধানটিই আমাকে এই চ্যালেঞ্জ তৈরি করতে অনুপ্রাণিত করেছিল!
xnor

12

সিজেম, 9 বাইট

r_f#r_f#=

1শব্দগুলি isomorphs এবং 0যদি না হয় তবে মুদ্রণ করে ।

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

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

r    e# Read a whitespace separated token from STDIN.
_    e# Push a copy.
f#   e# Get the indexes of all characters from the first copy in the second.
r_f# e# Repeat for the second word.
=    e# Check for equality.

10

জাভাস্ক্রিপ্ট, ES7, 62 55 54 52 51 বাইট

f=(x,y,g=z=>[for(i of z)z.search(i)]+0)=>g(x)==g(y)

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

f=(x, y,                  // Create a function named f which takes two arguments x and y
   g=                     // There is a third default argument to f which equals to
     z=>                  // and arrow function which takes argument z
     [                    // Return this array which is created using array comprehension
      for(i of z)         // For each character of z
      z.search(i)         // Use the index of that character in z in place of the character
     ]+0                  // And finally type cast that array to a string
                          // Here, the array elements are automatically joined by a ','
                          // and appended by a 0.
                          // Its funny how JS type casts Array + Number to a string
   )=>                    // Now the body of function f starts
      g(x)==g(y)          // It simply returns if index map of x equals index map of y

উপরের কোডটি নীচে স্নিপেট ব্যবহার করে দেখুন।

2 বাইট সংরক্ষিত হয়েছে @ এডক 65 এর জন্য ধন্যবাদ


7
+1, এটি চেষ্টা করে, ভাল কাজ করে। +0এর বদলে +""?
edc65

1
@ এডসি 65 ওয়াও, টাইপকাস্টিং ডাব্লুটিএফ
অপ্টিমাইজার

1
আমি এখনই বুঝতে পেরেছি যে স্ট্রিংগুলি 'এ-জেড', সুতরাং আপনি নিরাপদে সূচিপত্রের পরিবর্তে অনুসন্ধান ব্যবহার করতে পারেন এবং আরও 1 বাইট কাটতে পারেন।
edc65

অ্যারে বোধগম্যতা শেষ পর্যন্ত এস 7 কেটে নেওয়া হয়নি? এই কোডটি কোথায় কাজ করে? আমি কেবল
মোজিলায়

8

বাশ + কোর্টিলস, 38

[ `tr $@<<<$1``tr $2 $1<<<$2` = $2$1 ]

নোট করুন আমরা এখানে সত্যবাদী / মিথ্যাচারের সাধারণ শেল আইডিয়াটি ব্যবহার করছি - শূন্যের অর্থ ব্যর্থতা বা সত্য এবং শূন্যের অর্থ ত্রুটি বা মিথ্যা:

$ for t in "ESTATE DUELED" "DUELED ESTATE" "XXX YYY" "CBAABC DEFFED" "RAMBUNCTIOUSLY THERMODYNAMICS" "DISCRIMINATIVE SIMPLIFICATION" "SEE SAW" "ANTS PANTS" "BANANA SERENE" "BANANA SENSES" "AB CC" "XXY XYY" "ABCBACCBA ABCBACCAB"; do
> ./isomorph.sh $t
> echo $t $?
> done
ESTATE DUELED 0
DUELED ESTATE 0
XXX YYY 0
CBAABC DEFFED 0
RAMBUNCTIOUSLY THERMODYNAMICS 0
DISCRIMINATIVE SIMPLIFICATION 0
SEE SAW 1
ANTS PANTS 1
BANANA SERENE 1
BANANA SENSES 1
AB CC 1
XXY XYY 1
ABCBACCBA ABCBACCAB 1
$ 

8

হাস্কেল, 33 29

সম্পাদনা করুন:

এটি বেশ দেরিতে হয়েছে, তবে আমি আবেদনকারীদের ব্যবহার করে এই উন্নতিটি পেয়েছি, যা কেবল মার্চ ২০১৫-এ উপস্থাপনের জন্য যুক্ত করা হয়েছিল।

s%k=g s==g k
g s=(==)<$>s<*>s

পুরাতন রুপ:

s%k=g s==g k
g s=[a==b|a<-s,b<-s]

চেকিং ফাংশন হয় (%)

এটি প্রতিটি স্ট্রিংয়ের "সমতা রেকর্ড" তৈরি করে কাজ করে: প্রতিটি দুটি সূচকের জন্য, এটি সমান অক্ষর রয়েছে কিনা তা রেকর্ড করে। রেকর্ডটি অর্ডার করা হয় যাতে দুটি সূচকের রেকর্ড i, j সর্বদা একই জায়গায় থাকে * এবং তাই রেকর্ডগুলির সাম্যতা পরীক্ষা করে স্ট্রিংগুলির একই প্যাটার্ন রয়েছে কিনা তা ফিরে আসবে।

উদাহরণস্বরূপ, "এবিসি" এর সমতা রেকর্ডটি [1,0,0,0,1,0,0,0,1](সত্যের জন্য 1, মিথ্যাটির জন্য 0) - সেখানে Trueকোনও সূচককে নিজের সাথে তুলনা করা হয়। অন্য কোথাও একটি মিথ্যা। (এই চেকগুলি এড়িয়ে যাওয়া আরও কার্যকর হতে পারে তবে গল্ফংয়ের ক্ষেত্রে এটি আরও শক্ত)

* যদি স্ট্রিংগুলি একই দৈর্ঘ্যের হয়। অন্যথায় এটি মিথ্যা ফিরিয়ে দেয় কারণ রেকর্ডগুলি বিভিন্ন দৈর্ঘ্যের


6

হাস্কেল, 45 41 বাইট

h l=map(`lookup`zip l[1..])l
x!y=h x==h y

রিটার্ন Trueবা False, যেমন "ESTATE" ! "DUELED"-> True

অন্যান্য অনেক উত্তরে দেখা হিসাবে মানচিত্রের চর-থেকে-প্রথম-সূচক পদ্ধতি ব্যবহার করে। অ্যাসোসিয়েশন তালিকাগুলি কার্যকর হয়, কারণ আগে এন্ট্রি ট্রাম্প। "aba"হয়ে [(a,1),(b,2),(a,3)]যেখানে lookupসবসময় রক্ষিত রাখে a-> 1

সম্পাদনা করুন: @ মরিস সংরক্ষণ করতে 4 বাইট খুঁজে পেয়েছে।


আপনি (flip lookup$zip l[1..])দ্বারা প্রতিস্থাপন করতে পারেন (`lookup`zip l[1..])
লিন

6

ব্রেইনফাক, 169 168 162 144 140 131 130

অ্যালেক্স Pankratov এর সঙ্গে সামঞ্জস্যপূর্ণ বাফুফে (brainfuck SPOJ এবং ideone ব্যবহৃত অনুবাদক) এবং থমাস Cort এর BFI (অরাজকতা গলফ উপর ব্যবহৃত হয়)।

প্রত্যাশিত ইনপুটটি দুটি স্ট্রিং যা একটি ট্যাব দ্বারা পৃথক, দ্বিতীয় স্ট্রিংয়ের পরে কোনও নতুন লাইন নেই। আউটপুটটি 1isomorphs এবং 0অ-isomorphs এর জন্য, যা ফলাফলটি চাক্ষুষভাবে দেখার জন্য সুবিধাজনক, যদিও সংক্ষিপ্ত বিকল্প নয়। ( আপডেট: আউটপুট সহ \x01এবং উত্তরের নীচে বিভাজক \x00হিসাবে সংক্ষিপ্ত সংস্করণ \x00))

আদর্শের উপর বিক্ষোভ

,+
[
  -
  ---------
  >+<
  [
    >>-<
    [
      <
      [
        >+<
        <<<<-<+>>>>>-
      ]
      ++[->+]
      ->+[+<-]
      >[<<<<]
      <
    ]
    <[>+<-]
    +[->+]
    <->
    >>>
  ]
  >
  [
    [[-]<<<<<]
    >>>>
  ]
  <,+
]
>>>+>+
[
  [<->-]
  <[>>>>>]
  <<<<
]
-<[>]
+++++++[<+++++++>-]
<.

এই সমস্যাটি ব্রেনফাকের জন্য খুব সুন্দর হতে পারে।

ইনডেক্সিং সহ প্রাথমিক ধারণাটি বর্তমান স্ট্রিং উপসর্গের শেষে থেকে পিছনে যেতে হবে। চরিত্রটি যদি আগে না ঘটে থাকে তবে আমরা স্ট্রিং উপসর্গটির দৈর্ঘ্য নিতে পারি। উদাহরণ স্বরূপ:

STATES
123255

কোডটিতে সূচিকাগুলি আসলে কিছুটা আলাদা তবে একই নীতিটি ব্যবহার করে।

মেমরি লেআউটটি 5 টি ব্লকের মধ্যে রয়েছে:

0 0 0 0 0 0 c 0 i p 0 c 0 i p 0 c 0 i p 0 0 0 0

cঅক্ষর, iসূচক এবং pপূর্ববর্তী (সূচী) এর জন্য দাঁড়ায় । যখন প্রথম স্ট্রিংটি প্রক্রিয়া করা হচ্ছে তখন সমস্ত pস্লট শূন্য। বাম দিকের ঘরটি cবর্তমান চরিত্রের অনুলিপি রাখতে ব্যবহৃত হয় যার আমরা সূচকটি খুঁজতে চেষ্টা করছি। বর্তমানের বাম দিকের ঘরটি সহজে পয়েন্টার নেভিগেশনের জন্য iধরে রাখতে ব্যবহৃত হয় -1

অনেকগুলি শর্ত রয়েছে যা সাবধানতার সাথে বিবেচনা করা দরকার। শেষে, আমরা জোড়গুলির তুলনা করে আইসোমর্ফগুলি পরীক্ষা করি এবং স্ট্রিংগুলি আইসোমর্ফগুলি হয় তবেই আমরা (i,p)বাম দিকের (i,p)জোড়ার বামে শূন্য কোষগুলির গুচ্ছ পৌঁছে যাই । কোডটিকে অনুসরণ করা আরও সহজ করার জন্য এখানে একটি মন্তব্য করা সংস্করণ রয়েছে:

,+
[                       while there is input
  -
  ---------
  >+<                   increment char (adjust later)
  [                     if not tab
    >>-<                set navigation flag
    [                   loop to find index
      <                 travel to copy
      [
        >+<             restore char
        <<<<-<+>>>>>-   compare chars and create copy
      ]
      ++[->+]           travel between navigation flags
      ->+[+<-]          increment index by 2 and go back
      >[<<<<]           proceed if not fallen off string
      <                 compare chars
    ]
    <[>+<-]             restore char (or no op)
    +[->+]              go back to navigation flag
    <->                 adjust char
    >>>                 alignment
  ]
  >
  [                     if tab
    [[-]<<<<<]          erase chars and go to beginning
    >>>>                alignment
  ]
  <,+
]
>>>+>+                  check string lengths and start loop
[
  [<->-]                compare indices
  <[>>>>>]              realign if not equal
  <<<<                  proceed
]
-<[>]                   cell to left is zero iff isomorphs
+++++++[<+++++++>-]
<.

হালনাগাদ:

এখানে এমন একটি সংস্করণ রয়েছে যা \x01আইসোমর্ফগুলি এবং \x00নন-আইসমোর্ফগুলির জন্য মুদ্রণ করে । উপায় [এবং ]কাজের কারণে এটি ব্রেইনফাকের পক্ষে সত্যবাদী এবং ফ্যালাসির তর্কযুক্ত আরও নিখুঁত ব্যাখ্যা । পার্থক্যটি একেবারে শেষের দিকে।

অতিরিক্ত: এখন \x0010 বাইট সংরক্ষণ করার জন্য পৃথককারী হিসাবে ব্যবহার করা হচ্ছে।

+
[
  -
  >+<
  [
    >>-<
    [
      <
      [
        >+<
        <<<<-<+>>>>>-
      ]
      ++[->+]
      ->+[+<-]
      >[<<<<]
      <
    ]
    <[>+<-]
    +[->+]
    <->
    >>>
  ]
  >
  [
    [[-]<<<<<]
    >>>>
  ]
  <,+
]
>>>+>+
[
  [<->-]
  <[>>>>>]
  <<<<
]
-<[>]
<+.

5

জাভাস্ক্রিপ্ট (ES6), 62

একটি অ্যাক্সেস ফাংশন ব্যবহার করে hযা প্রতিটি শব্দের প্রতিটি অক্ষরের অবস্থান সম্বলিত একটি অ্যারে মানচিত্র করে, উদাহরণস্বরূপ: পাস -> [1,2,3,3]। যদি hদুটি শব্দ একই ফল দেয় তবে ফাংশনটি প্রয়োগ করে সত্য ।

f=(a,b,h=w=>0+[for(c of(n=k=[],w))k[c]=k[c]||++n])=>h(b)==h(a)

// TEST

;[
// True
 ['ESTATE','DUELED']
,['DUELED','ESTATE']
,['XXX','YYY']
,['CBAABC','DEFFED']
,['RAMBUNCTIOUSLY','THERMODYNAMICS']
,['DISCRIMINATIVE','SIMPLIFICATION']

// False:

,['SEE','SAW']
,['ANTS','PANTS']
,['BANANA','SERENE']
,['BANANA','SENSES']
,['XXY','XYY']
,['ABCBACCBA','ABCBACCAB']
]
.forEach(t=>(f(t[0],t[1])?OK:KO).innerHTML+=t+'\n')
Ok<br>
<pre id=OK></pre><br>
KO<br>
<pre id=KO></pre>


1
কখনও কখনও, সহজ সংক্ষিপ্ত হয়;)
অপ্টিমাইজার 21

5

আর, 78

function(x,y)identical((g=function(z)match(a<-strsplit(z,"")[[1]],a))(x),g(y))

ডি-golfed:

word_to_num <- function(word) {
   chars <- strsplit(word,"")[[1]]
   match(chars, chars)
}
are_isomorph <- function(word1, word2) identical(word_to_num(word1), 
                                                 word_to_num(word2))

আমাকে মার! (+1)
শ্যাডট্যালকার

আমি মনে করি ... এর all( (g=...)(x)==g(y))চেয়ে কম identical...
জিউসেপে

5

রুবি, 83 বাইট

t=->x{y=0;z=?`;x.gsub!(y[0],z.succ!)while y=x.match(/[A-Z]/);x};f=->a,b{t[a]==t[b]}

এটি এমন একটি ফাংশন fযা দুটি আর্গুমেন্ট নেয় এবং রিটার্ন নেয় trueবা false

ব্যাখ্যা:

test = -> str {
    y = nil  # we're just initializing this; it doesn't matter to what
             # this is the variable we use to store the `match' result
    z = '`'  # backtick is the ASCII character before `a'
    while y = str.match(/[A-Z]/) do  # while there is an uppercase letter in str
        str.gsub!(y[0], z.succ!)  # replace all instances of the uppercase letter
                                  # with the next unused lowercase letter
    end
    str  # return the new string
}
# self-explanatory
f=->a,b{test[a]==test[b]}

1
t=->x{z=?`;x.chars.to_a.uniq.map{|c|x.gsub!(c,z.succ!)};x};f=->a,b{t[a]==t[b]}এটিতে 4 বাইট সাশ্রয় করা উচিত: এবং প্রতিস্থাপনের জন্য আপনি যদি একটি হ্যাশ ব্যবহার করেন তবে আপনি এটি 68 এ নামিয়ে ফেলতে পারেন:t=->x{h={};i=9;x.gsub!(/./){|c|h[c]||h[c]=i+=1}};f=->a,b{t[a]==t[b]}
ব্লুটোরেঞ্জ

5

জাভা, 107

(s,t)->java.util.Arrays.equals(s.chars().map(s::indexOf).toArray(),t.chars().map(t::indexOf).toArray())

প্রতিটি চরিত্র sএবং tতার অবস্থানের মানচিত্র এবং সমতার জন্য পরীক্ষা করে।

সম্প্রসারিত:

class Isomorphs {
    public static void main(String[] args) {
        java.util.function.BiFunction<String, String, Boolean> f =
            (s, t) -> java.util.Arrays.equals(
                                              s.chars().map(s::indexOf).toArray(),
                                              t.chars().map(t::indexOf).toArray()
                                             )
           ;
        System.out.println(f.apply("XXY", "XYY"));
    }
}

আমি মনে করি না যদি স্ট্রিংগুলির দৈর্ঘ্য আলাদা থাকে তবে এটি সঠিকভাবে কাজ করবে।
জন

@ জন হ্যাঁ, এটি করে।
Ypnypn

আহ, ঠিক আছে- আমি মনে করি "প্রসারিত" সংস্করণটি বিভ্রান্তিকর।
জন

4

পাইথন 3, 85 বাইট

f=lambda a,b:''.join(map(lambda g:dict(zip(a,b))[g],a))==b
g=lambda a,b:f(a,b)&f(b,a)

এই এক ইনপুট / আউটপুট কোথায়?
DJMcMayhem

@ ডিজেএমসিমেহেম gমূল কাজ, fহেল্পার। gভিতরে ভেরিয়েবলের একটি বিভ্রান্তিকর পছন্দ রয়েছে f, তবে এটি একটি সম্পর্কযুক্ত বাউন্ডেবল ভেরিয়েবল .. g=আনোন ফাংশনগুলিকে অনুমতি দেয় এমন রায় অনুসারে optionচ্ছিক, যা দুটি চর সংরক্ষণ করে। '
xnor

4

পাইথ, 9 বাইট

qFmmxdkdQ

নিম্নলিখিত ফর্ম ইনপুট নেয়:

"ESTATE", "DUELED"

যদি তা গ্রহণযোগ্য না হয় তবে নিম্নলিখিত কোডটি 10 ​​বাইট:

qFmmxdkd.z

এবং এই ইনপুট ফর্মটি ব্যবহার করে:

ESTATE
DUELED

স্ট্রিং প্রতিনিধিত্ব করে চর সূচী ব্যবহার করে।


প্রথম ইনপুট ফর্ম্যাটটি ঠিক আছে। সাম্যতা যাচাই করতে আপনি কীভাবে হ্রাস করছেন সে বিষয়ে আমি আগ্রহী কিন্তু Fভাঁজ হিসাবে কীভাবে কাজ করে তা সম্পর্কে আমি অস্পষ্ট । কি <binary>F?
xnor

@xnor <binary>F<seq>হয় <binary>উপর গুটান <seq>। এটি <binary>প্রতিটি জোড়া উপাদানগুলির মধ্যে ছেদ করার সমতুল্য <seq>। সুতরাং, <binary>Fএকটি 2 উপাদান ক্রম উপর পাইথ .*বা *পাইথনের সমতুল্য ক্রমটি কেবল ক্রমটি প্রয়োগ করে ।
isaacg

আমি ভেবেছিলাম পিছনে Qপাইথের অন্তর্নিহিত ছিল?
সাইয়েস

@ কয়েস তখন আর ফিরে আসেনি - প্রায় এক বছর পরে এ বৈশিষ্ট্যটি এপ্রিল 2016 এ যুক্ত করা হয়েছিল।
isaacg

4

মতলব, 50 বাইট

f=@(s,t)isequal(bsxfun(@eq,s,s'),bsxfun(@eq,t,t'))

ফাংশনটি কিছু স্থান বাঁচাতে বেনামে হিসাবে সংজ্ঞায়িত করা হয়।

উদাহরণ:

>> f=@(s,t)isequal(bsxfun(@eq,s,s'),bsxfun(@eq,t,t'));
>> f('ESTATE','DUELED')
ans =
     1
>> f('ANTS','PANTS')
ans =
     0

4

অক্টাভা, 26 বাইট

@(s,t)isequal(s==s',t==t')

3
বেশ মজার তো. ব্যাখ্যা?
গর্বিত হাস্কেলর 18

==ম্যাট্রিক্স উপাদান-ভিত্তিক সমতা, এবং যেহেতু sএবং s'বিভিন্ন আকারের, তাই অষ্টাভের "সম্প্রচার" ss'
অপারেটিং

এটি @ লুইস মেন্ডো'র মতলব সমাধানের মতো একই পদ্ধতি, তবে সেখানে সম্প্রসারণ সুস্পষ্ট।
রাকলাইস


4

এপিএল (ডায়ালগ) , 5 4 বাইট

-1 ngn এর ইঙ্গিত ধন্যবাদ।

অজ্ঞাতনামা tacit উপসর্গ ফাংশন যা যুক্তি হিসাবে দুটি স্ট্রিংয়ের একটি তালিকা নেয়।

≡.⍳⍨

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

এটি অভ্যন্তরীণ পণ্য, তবে স্বাভাবিকের পরিবর্তে +এবং ×এটি ব্যবহার করে

 সদৃশতা

. এবং

ɩ ndex (প্রতিটি উপাদান প্রথম সংঘটন)

 উভয় আর্গুমেন্ট হিসাবে ব্যবহৃত শব্দের সম্পূর্ণ দ্বি-উপাদান তালিকা সহ

যদি আমরা শব্দগুলিকে কল করি Aএবং B, তবে আমরা নিম্নোক্তভাবে পূর্ববর্তী সমাধানটি বের করতে পারি:

≡.⍳⍨ A B
A B ≡.⍳ A B
(A⍳A) ≡ (B⍳B)
(⍳⍨A) ≡ (⍳⍨B)
≡/ ⍳⍨¨ A B

পূর্ববর্তী সমাধান

অজ্ঞাতনামা tacit উপসর্গ ফাংশন যা যুক্তি হিসাবে দুটি স্ট্রিংয়ের একটি তালিকা নেয়।

≡/⍳⍨¨

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

 সদৃশতা

/ দিয়ে

ɩ ndex (প্রতিটি উপাদান প্রথম সংঘটন ...)

 সেলফি (… নিজেই)

¨ প্রতিটি


আপনি কি অভ্যন্তরীণ পণ্য দেখতে পারেন? :)
এনজিএন

হ্যাঁ অবশ্যই সেলি আমাকে।
অ্যাডম

শীর্ষ লিঙ্কটি কি পুরানো সমাধানের সাথে লিঙ্ক করার কথা?
জাকারি

খুব খারাপ এটি উচ্চতর র‌্যাঙ্ক অ্যারেগুলিতে যদিও কাজ করে না: পি
জাকারি

1
@ Zachary প্রতিশ্রুত: ngn.github.io/apl-codegolf-2017/readme.txt
ngn


3

রুবি, 50 বাইট

30 বাইট সংক্ষিপ্ত রুবি কোড। আমি সমাধানগুলি একবার দেখার আগে লিখেছিলাম, উভয় স্ট্রিংয়ের প্রতিটি চরিত্রের জন্য পরীক্ষা করে দেখা যায় যে সেই চরিত্রের প্রথম উপস্থিতির সূচি মেলে কিনা; অর্থাত। একটি স্ট্রিংটিকে তার স্বাভাবিক আকারে রূপান্তরিত করে 01121এবং এর সাথে তুলনা করে।

->x,y{g=->z{z.chars.map{|c|z=~/#{c}/}};g[x]==g[y]}

উপর পরীক্ষার বিষয় ideone একটি অতিরিক্ত বোনাস হিসাবে, এই ideone এর কোড হাইলাইট বিরতি।



3

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

^((.)(?=.+ (\3.|)(.))(?=((?=(\2|)?+.* \3\4(\7?(?(?=.*+\6)(?!\4).|\4))).)+ ))+. \3..$ 

বিষয়টি দুটি ও দুটি পৃথক পৃথক শব্দ হওয়া উচিত, যেমন ওপিতে। এখানে একটি কার্সারি ব্যাখ্যা:

প্রথম শব্দের প্রতিটি অক্ষরের জন্য এক্স:

দ্বিতীয় শব্দটির অপেক্ষায় থাকুন এবং এক্সের সাথে মিলিত দ্বিতীয় শব্দের Y অক্ষর হিসাবে আমরা কতটা বরাবর রয়েছি তা স্মরণ করার জন্য পুনরায় উল্লেখগুলি প্রতিষ্ঠা করুন

প্রতিটি অক্ষরের জন্য জেড প্রথম শব্দের বর্তমান অবস্থার অতীত:

উপরের মত অনুরূপ পিছনে রেফারেন্স স্থাপন করুন।

দ্বিতীয় শব্দের সাথে সম্পর্কিত চিঠির দিকে তাকান এবং জেড = এক্স এর পরে একটি ওয়াইয়ের সাথে মেলে কিনা তা যাচাই করুন, অন্যথায় কোনও চিঠিটি যা ওয়াই নয় তা মেলান

এই পুনরাবৃত্তিটি প্রথম শব্দের মধ্যে পেনাল্টিমেট লেটার না হওয়া পর্যন্ত মিলে যাওয়ার পরে শেষ হতে পারে। এই মুহুর্তে, আর কোনও বৈধকরণের প্রয়োজন নেই, তাই বাকী সমস্ত কিছুই পরীক্ষা করে দেখতে হবে যে শব্দগুলি সমান দৈর্ঘ্যের (দ্বিতীয় শব্দের জমে থাকা সাবস্ট্রিংগুলি সহ পিছনের রেফারেন্সটি সর্বদা 1 অক্ষর দ্বারা পিছনে থাকে)।


2

রুবি, 31 বাইট

->a{!!a.uniq!{|s|s.tr s,'a-z'}}

এমন একটি প্রোক যা স্ট্রিংগুলির একটি অ্যারে নেয় এবং এটি একে অপরের সাথে আইসোমোরফিক কিনা তা পরীক্ষা করে। tr s,'a-z'এই যুক্তিগুলির sসাথে বর্ণমালার মধ্যে প্রতিটি বর্ণকে নবম বর্ণের পরিবর্তে একটি স্ট্রিংকে স্বাভাবিক করে তোলে, যেখানে nসেই অক্ষরটি স্ট্রিংয়ে উপস্থিত হয় এমন সর্বশ্রেষ্ঠ সূচী। উদাহরণস্বরূপ, estateহয়ে যায় fbedef, যেমন হয় dueled


1

কোবরা, 72 বাইট

do(a='',b='')=(for i in a get a.indexOf(i))==for i in b get b.indexOf(i)

আপনি কি নিশ্চিত যে এই AB CCপরীক্ষার কেস মিথ্যা বলে চিহ্নিত করেছে ?
xnor

@xnor এখনই স্থির
Mayurous

1

জাভাস্ক্রিপ্ট (ES5), 142 98

বেশ বড় একটি, তবে আমি এখনও কোনও ES5 সংস্করণ দেখিনি।

for(l=j=2;j--;){c=prompt();for(i=c.length;i--;)c=c.replace(RegExp(c[i],"g"),i);b=l==c;l=c}alert(b)

প্রথম অক্ষরের প্রতিটি ঘটনাকে কেবল বিপরীতমুখী মানের সাথে প্রতিস্থাপন করে। প্রতিটি চরিত্রের জন্য এটি পুনরাবৃত্তি করে।

এটি উভয় ইনপুটগুলির জন্য একই কাজ করে এবং উত্পন্ন প্যাটার্নটির তুলনা করে।

তুলনাটি বেশ কুৎসিত, তবে আমি এটি সংরক্ষণ এবং তুলনা করতে কোনও অ্যারে ব্যবহার করতে চাই না।


1
আপনি সরানো যায়নি ;l=cকরতে for(l=j=2;j--;হবে এবং একটি বাইট সংরক্ষণ করবেন?
জোনাথন ফ্রেচ

1

পার্ল, 38 বাইট

($_,$a)=@ARGV;eval"y/$_/$a/";say$_~~$a

হিসাবে চালান perl -E '($_,$a)=@ARGV;eval"y/$_/$a/";say$_~~$a' RAMBUNCTIOUSLY THERMODYNAMICS

প্রিন্ট 1 সত্য হলে, মিথ্যা হলে কিছুই না।



1

সি ++, 213 196 162 বাইট

-51 বাইট জ্যাকারি ধন্যবাদ

#include<map>
#define F(X,x)for(auto&e:X){if(x.end()==x.find(e))x[e]=65+x.size();e=x[e];}
auto i=[](auto a,auto b){std::map<int,int>c,d;F(a,c)F(b,d)return a==b;};

ল্যাম্বডাকে কল করতে আপনাকে 2 টি আর্গুমেন্ট পাস করতে হবে যা std::stringডেটা টাইপ are

পরীক্ষার কোড:

std::initializer_list<std::pair<std::string, std::string>> test{
    {"ESTATE","DUELED"},
    {"DUELED","ESTATE"},
    {"XXX","YYY"},
    {"CBAABC","DEFFED"},
    {"RAMBUNCTIOUSLY","THERMODYNAMICS"},
    {"DISCRIMINATIVE","SIMPLIFICATION"},
    {"SEE","SAW"},
    {"ANTS","PANTS"},
    {"BANANA","SERENE"},
    {"BANAnA","SENSES"},
    {"AB","CC"},
    {"XXY","XYY"},
    {"ABCBACCBA","ABCBACCAB"},
    {"ABAB","AC"}
};

for (const auto& a : test) {
    std::cout << "Test with " << a.first << " and " << a.second <<
        " outputs : " << (i(a.first, a.second)?"TRUE":"FALSE") << '\n';
}

কোডটির জন্য যা পরীক্ষা করে, সহ iostreamএবং stringশিরোনাম ফাইলটি প্রয়োজনীয়


1
দেখে মনে হচ্ছে না যে আপনি স্ট্রিং শিরোলেখ থেকে কিছু ব্যবহার করছেন, তাই আপনি কী এটি সরিয়ে ফেলতে এবং ব্যবহারকারীর নিজেরাই এটি অন্তর্ভুক্ত করতে পারেন?
জাকারি

কি এই 161 বাইট জন্য কাজ করে?
জাকারি

@ জাচারý যদি আপনি eযুক্তি হিসাবে যুক্ত করেন তবে findহ্যাঁ, এটি কার্যকর হয়
হাটসুপয়েন্টারকুন

সেই মুহুর্তে যখন আপনি
ব্রেইনফাকের

1

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

এই সংস্করণটি অ্যারে উপলব্ধি ব্যবহার করে না এবং কারিটিং সিনট্যাক্স ব্যবহার করে ইনপুট নেয়।

a=>b=>(f=x=>0+[...x].map(c=>x.search(c)))(a)==f(b)

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