গ্রুপ থেরাপি: গোষ্ঠীগুলি চিহ্নিত করুন


17

একটি প্রোগ্রাম লিখুন, যা নির্ধারিত সীমাবদ্ধ ম্যাগমার গুণক টেবিলটি কোনও গোষ্ঠীর প্রতিনিধিত্ব করে কিনা তা নির্ধারণ করে। একটি ম্যাগমা হ'ল একটি বাইনারি অপারেশন সহ একটি সেট যা বন্ধ রয়েছে, এর অর্থ

  • সকল ক্ষেত্রে, খ-এ জি, এ * বি আবার জি-তে রয়েছে (বন্ধ)

(জি, *) যাক একটি ম্যাজমা হতে। (জি, *) একটি গ্রুপ যদি হয়

  • জি-তে সমস্ত, বি, সি, (ক * বি) * সি = এ * (বি * সি) (সমিতি)
  • জি-তে একটি এল ই উপাদান রয়েছে যা জি * তে সমস্ত * এর জন্য ই * a = ক * ই = এ (নিরপেক্ষ উপাদানটির অস্তিত্ব)
  • জি এর সবকটির জন্য জি-তে অ্যাব রয়েছে যে একটি * বি = বি * এ = ই যেখানে ই নিরপেক্ষ উপাদান (বিপরীতে উপস্থিতি)

চশমা

ইনপুটটি এন ^ 2-1 অক্ষরের একটি স্ট্রিং (ম্যাগমার প্রতিটি উপাদানগুলির জন্য একটি অক্ষর, 0-9, অ্যাজ অনুমোদিত) এবং অপারেটরের নাম বাদ দিয়ে সারি সারি সারণি পাঠ্য সারিটি উপস্থাপন করে। আপনি ধরে নিতে পারেন যে ইনপুটটি একটি বৈধ ম্যাগমা প্রতিনিধিত্ব করে (এর অর্থ প্রতিটি শিরোনাম সারি / কলমের ঠিক একবারে উপাদান উপাদান প্রয়োগ করা হয়)।

উদাহরণ: এখানে আমাদের কাছে Z_4 এর সারণী রয়েছে

+ | 0 1 2 3
-----------
0 | 0 1 2 3
1 | 1 2 3 0
2 | 2 3 0 1
3 | 3 0 1 2

ইনপুট স্ট্রিং হবে 012300123112302230133012। (বা যদি আমরা প্রতীক ব্যবহার করি তবে তাও হতে পারে nezdnnezdeezdnzzdneddnez)। সচেতন থাকুন যে সারি এবং কলামে উপাদানগুলির ক্রম একই হতে হবে না, তাই Z_4 এর সারণীটিও এর মতো দেখতে পারে:

+ | 1 3 2 0
-----------
1 | 2 0 3 1
0 | 1 3 2 0
2 | 3 1 0 2
3 | 0 2 1 3

এর অর্থ এটিও যে নিরপেক্ষ উপাদানটি প্রথম কলামে বা প্রথম সারিতে অগত্যা নয়।

যদি এটি একটি গোষ্ঠী হয় তবে প্রোগ্রামটিকে নিরপেক্ষ উপাদানটির প্রতিনিধিত্বকারী চরিত্রটি ফিরিয়ে দিতে হবে। যদি না হয় তবে এটি একটি মিথ্যা (মান 0-9 অ্যাজ থেকে পৃথক) মানটি ফিরিয়ে দিতে হবে

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

কেবলমাত্র স্ট্রিংয়ের একটি ডিজিট পরিবর্তন করে বা কৃত্রিমভাবে কোনও ক্রিয়াকলাপকে সংজ্ঞায়িত করে টেবিলগুলিকে কৃপণভাবে গ্রুপ অ্যাকোয়ামের সাথে বৈপরীত্য তৈরি করে অ-গোষ্ঠীগুলি সহজেই তৈরি করা যায়।

গ্রুপ

নগণ্য

* | x
-----
x | x

xxx

Neutral Element: x

এইচ (কোয়ার্টারিয়ন গ্রুপ)

* | p t d k g b n m 
-------------------
m | b d t g k p m n 
p | m k g d t n p b 
n | p t d k g b n m 
b | n g k t d m b p 
t | g m n p b k t d 
d | k n m b p g d t 
k | t b p m n d k g 
g | d p b n m t g k 

ptdkgbnmmbdtgkpmnpmkgdtnpbnptdkgbnmbngktdmbptgmnpbktddknmbpgdtktbpmndkggdpbnmtgk

Neutral Element: n

D_4

* | y r s t u v w x
-------------------
u | u x w v y t s r
v | v u x w r y t s
w | w v u x s r y t
x | x w v u t s r y
y | y r s t u v w x
r | r s t y v w x u
s | s t y r w x u v
t | t y r s x u v w


yrstuvwxuuxwvytsrvvuxwrytswwvuxsrytxxwvutsryyyrstuvwxrrstyvwxusstyrwxuvttyrsxuvw

Neutral Element: y

Z_6 x Z_2

x | 0 1 2 3 5 7 8 9 a b 4 6
---------------------------
0 | 0 1 2 3 5 7 8 9 a b 4 6 
1 | 1 2 3 4 0 8 9 a b 6 5 7 
2 | 2 3 4 5 1 9 a b 6 7 0 8 
7 | 7 8 9 a 6 2 3 4 5 0 b 1 
8 | 8 9 a b 7 3 4 5 0 1 6 2 
9 | 9 a b 6 8 4 5 0 1 2 7 3 
a | a b 6 7 9 5 0 1 2 3 8 4 
b | b 6 7 8 a 0 1 2 3 4 9 5 
3 | 3 4 5 0 2 a b 6 7 8 1 9 
4 | 4 5 0 1 3 b 6 7 8 9 2 a 
5 | 5 0 1 2 4 6 7 8 9 a 3 b 
6 | 6 7 8 9 b 1 2 3 4 5 a 0 

01235789ab46001235789ab4611234089ab6572234519ab67087789a623450b1889ab7345016299ab684501273aab6795012384bb678a0123495334502ab67819445013b67892a5501246789a3b66789b12345a0

Neutral Element: 0

A_4

* | i a b c d e f g h j k l
---------------------------
i | i a b c d e f g h j k l
a | a b i e c d g h f l j k
b | b i a d e c h f g k l j
c | c f j i g k a d l b e h
d | d h k b f l i e j a c g
e | e g l a h j b c k i d f
f | f j c k i g d l a h b e
g | g l e j a h c k b f i d
h | h k d l b f e j i g a c
j | j c f g k i l a d e h b
k | k d h f l b j i e c g a
l | l e g h j a k b c d f i

iabcdefghjkliiabcdefghjklaabiecdghfljkbbiadechfgkljccfjigkadlbehddhkbfliejacgeeglahjbckidfffjckigdlahbegglejahckbfidhhkdlbfejigacjjcfgkiladehbkkdhflbjiecgalleghjakbcdfi

Neutral Element: i

অ গোষ্ঠীসমূহ

একটি লুপ (নিরপেক্ষ উপাদান সহ গোষ্ঠী অনুপস্থিত সাহসীতা, বা একটি কোয়েস-গ্রুপ)

* | 1 2 3 4 5
-------------
1 | 1 2 3 4 5 
2 | 2 4 1 5 3 
3 | 3 5 4 2 1 
4 | 4 1 5 3 2 
5 | 5 3 2 1 4

12345112345224153335421441532553214

Neutral Element: 1
(2*2)*3 = 4*3 = 5 != 2 = 2*1 = 2*(2*3)

একটি আইপি-লুপ ( http://www.quasigroups.eu/contents/download/2008/16_2.pdf থেকে )

* | 1 2 3 4 5 6 7
-----------------
1 | 1 2 3 4 5 6 7
2 | 2 3 1 6 7 5 4
3 | 3 1 2 7 6 4 5
4 | 4 7 6 5 1 2 3
5 | 5 6 7 1 4 3 2
6 | 6 4 5 3 2 7 1
7 | 7 5 4 2 3 1 6

123456711234567223167543312764544765123556714326645327177542316

Neutral Element: 1
2*(2*4) = 2*6 = 5 != 7 = 3*4 = (2*2)*4

মনোয়েড (কুইকুনাক্স, ধন্যবাদ!)

মনোয়েড হ'ল ম্যাগমাস হ'ল সাহচর্য এবং একটি নিরপেক্ষ উপাদান।

* | 0 1 2 3
-----------
0 | 0 1 2 3
1 | 1 3 1 3
2 | 2 1 0 3
3 | 3 3 3 3

012300123113132210333333

Neutral Element: 0

আরেকটি মনয়েড

(গুণফল মোড 10, 5 ব্যতীত) আমাদের স্পষ্টতই বিপরীতমুখী হবে না, এবং সাহচর্যটি 10 ​​গুণ দ্বারা তৈরি করা হয়েছে।

* | 1 2 3 4 6 7 8 9
-------------------
1 | 1 2 3 4 6 7 8 9
2 | 2 4 6 8 2 4 6 8
3 | 3 6 9 2 8 1 4 7
4 | 4 8 2 6 4 8 2 6
6 | 6 2 8 4 6 2 8 4
7 | 7 4 1 8 2 9 6 3
8 | 8 6 4 2 8 6 4 2
9 | 9 8 7 6 4 3 2 1

Neutral Element: 1   12346789112346789224682468336928147448264826662846284774182963886428642998764321

ভেবেছিলাম আমি আরও বড় টেবিল যুক্ত করব, কেবল মজাদার জন্য: আদর্শ one.com/823aRG
জাস্টিন

কেবল মজাদার জন্য, এখানে আরও একটি বড় আইন যা 0-9a-zনিয়ম ভঙ্গ করে : আদর্শ one.com/vC0ewt
জাস্টিন

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

@ এডিসি গোষ্ঠীগুলি অবিচ্ছিন্নভাবে পরিবর্তনশীল হয় না (পরিবর্তনকারী গোষ্ঠীগুলিকে আবেলিয়ান বলা হয়)। গোষ্ঠীর সংজ্ঞা সম্পূর্ণ (এটি সাধারণ সংজ্ঞা), অতিরিক্ত কিছু আরও বিধিনিষেধ সরবরাহ করে। এই টেবিলগুলিতে নিরপেক্ষ উপাদানের সাথে গুণটি সাধারণত প্রথম সারিতে / কলামে থাকে এবং শিরোনাম সারি / কলামের উপাদানগুলির ক্রম সাধারণত একই থাকে, তবে আপনি এখনও এই সম্মেলনগুলি অনুসরণ না করে একটি বৈধ টেবিল লিখে রাখতে পারেন, যা আমি এখানে অন্তর্ভুক্ত করতে চেয়েছিলেন কি।
flawr

1
আমি কিছু মন্তব্য মুছে ফেললাম যা অপ্রচলিত বলে মনে হয়েছিল। মুছে ফেলা উচিত এমন কোনও মন্তব্য সম্পর্কে আমাকে অবহিত করুন।
মার্টিন ইন্ডার

উত্তর:


4

অষ্টাভে, 298 290 270 265 অক্ষর

function e=g(s)
c=@sortrows;d=a=c(c(reshape(a=[0 s],b=numel(a)^.5,b)')');
for i=2:b a(a==a(i))=i-1;end;
a=a(2:b,2:b--);u=1:b;
e=(isscalar(e=find(all(a==u')))&&a(e,:)==u&&sum(t=a==e)==1&&t==t')*e;
for x=u for y=u for z=u e*=a(a(x,y),z)==a(x,a(y,z));end;end;end;e=d(e+1);

265: অপ্রয়োজনীয় ফাংশন হ্যান্ডেল সরানো হয়েছে।

270: সব পরে, চেক যে e==hজন্য সবসময় পরিতৃপ্ত ই · একটি একটি = এবং সবসময় পরিতৃপ্ত একটি · জ = একটি প্রয়োজনীয় ছিল না। এটি তাদের পক্ষে পৃথক হওয়া সম্ভব নয় ( e · h =? )।

নীচের সমাধানের ব্যাখ্যা থেকে বিশদগুলি এখনও প্রাসঙ্গিক।


290:

function e=g(s)
c=@sortrows;d=a=c(c(reshape(a=[0 s],b=numel(a)^.5,b)')');
for i=2:b a(a==a(i))=i-1;end;
a=a(2:b,2:b--);u=1:b;
s=@isscalar;e=(s(e=find(all(a==u')))&&s(h=find(all(a'==u')'))&&sum(t=a==e)==1&&t==t')*e;
for x=u for y=u for z=u e*=a(a(x,y),z)==a(x,a(y,z));end;end;end;e=d(e+1);

প্রথম লাইন

c=@sortrows;d=a=c(c(reshape(a=[0 s],b=numel(a)^.5,b)')'); কেবলমাত্র এনএক্সএন টেবিলের মধ্যে ইনপুট সংরক্ষণ করে (অপারেশন চিহ্নের জায়গায় শূন্য অক্ষর সহ), এবং তার পরিকল্পিতভাবে কলাম এবং সারিগুলি সাজায়, যাতে সারি এবং কলাম একই ক্রম পায়:

+ | z a t b                        + | a b t z
-----------                        -----------
z | t b a z         becomes        a | t a z b
b | z a t b      ============>     b | a b t z
t | a z b t                        t | z t b a
a | b t z a                        z | b z a t

এখন, আমি "a","b","t","z"স্ট্যান্ডার্ডের পুনর্নির্মাণ করি 1, 2, 3, 4, যাতে আমি টেবিলটিকে দক্ষতার সাথে সূচক করতে পারি। এটি লাইন দ্বারা সম্পন্ন হয় for i=2:b a(a==a(i))=i-1;end;। এটি টেবিলের মতো ফল দেয়

0   1   2   3   4
1   3   1   4   2
2   1   2   3   4
3   4   3   2   1
4   2   4   1   3

, যেখানে আমরা এটির মাধ্যমে প্রথম সারির এবং কলাম থেকে মুক্তি পেতে পারি a=a(2:b,2:b--);u=1:b;:

3  1  4  2
1  2  3  4
4  3  2  1
2  4  1  3

এই টেবিলের প্রদত্ত বৈশিষ্ট্য রয়েছে:

  • যদি নিরপেক্ষ উপাদান থাকে এবং ঠিক এক ( isscalar) সারি এবং একটি কলামে সারি ভেক্টরের মান থাকে u=[1 2 3 ... number-of-elements]:

s=@isscalar;e=(s(e=find(all(a==u')))&&s(h=find(all(a'==u')'))&&...

  • যদি প্রতিটি উপাদান একটি একটি বিপরীত উপাদান আছে একটি ' , দুটি জিনিস রাখা: নিরপেক্ষ উপাদান শুধুমাত্র প্রতিটি কলামের একবার এবং শুধুমাত্র প্রতিটি সারির একবার (ঘটে sum(t=a==e)==1) এবং, সন্তুষ্ট একটি' · একটি = একটি · একটি ' , এর occurences হয় অনুবাদ সম্পর্কিত প্রতিসম্মতt==t'

  • a · বি সরল t(a,b)সূচক দ্বারা পুনরুদ্ধার করা যেতে পারে । তারপরে আমরা বোরিং লুপে সাহচর্য পরীক্ষা করি:

for x=u for y=u for z=u e*=a(a(x,y),z)==a(x,a(y,z));end;end;end;

ফাংশনটি নিরপেক্ষ উপাদানটিকে মূল টেবিল ( e=d(e+1)) বা নীল চরিত্রের যেভাবে প্রদর্শিত হয়েছে তা ফিরিয়ে দেয় যদি টেবিল কোনও গোষ্ঠী বর্ণনা না করে।


2
ভাল কাজ এবং ভাল ব্যাখ্যা। 1
edc65

সংশোধন করা হয়েছে, এখন যথাযথ মান প্রদান করে।
pawel.boczarski

1
অ্যাক্টেভ এফটিডব্লু =) আমি দুটি বিষয়ে (মাতলাব থেকে আগত) সম্পর্কে নিশ্চিত নই তবে সম্ভবত আপনি নিজের উত্তরটি উন্নত করতে এটি ব্যবহার করতে পারেন: `a (f (a == a (i))) = i-1` হ্রাস করা যেতে পারে থেকে a(a==a(i))=i-1? এর (...)^.5পরিবর্তে আপনি সম্ভবত এর পরিবর্তে ব্যবহার করতে পারেন sqrt(...)
flawr

@ ফ্লোয়ার ধন্যবাদ, তারা দু'জন অক্টেভে কাজ করে (সংস্করণ 3.8.1)
pawel.boczarski

6

রুবি, 401 ... 272

f=->s{n=(s.size+1)**0.5
w=n.to_i-1
e=s[0,w].split''
s=s[w,n*n]
m={}
w.times{(1..w).each{|i|m[s[0]+e[i-1]]=s[i]}
s=s[n,n*n]}
s=e.find{|a|e.all?{|b|x=m[a+b]
x==m[b+a]&&x==b}}
e.all?{|a|t=!0
e.all?{|b|x=m[a+b]
t||=x==m[b+a]&&x==s
e.all?{|c|m[m[a+b]+c]==m[a+m[b+c]]}}&&t}&&s}

এটি আমার প্রথম রুবি প্রোগ্রাম! এটি একটি ল্যাম্বডা ফাংশন সংজ্ঞায়িত করে যা আমরা করে পরীক্ষা করতে পারি puts f[gets.chomp]। আমি falseআমার মিথ্যা মানটির জন্য ফিরে আসি। ফাংশনটির প্রথমার্ধটি কেবল কোনও মানচিত্রে ইনপুটটি পার্স করা হয়, তারপরে দ্বিতীয়ার্ধে সম্ভাবনাগুলি পরীক্ষা করে।

f=->s{
    n=((s.size+1)**0.5).to_i
    w=n-1
    e=s[0,w].split'' # create an array of elements of the potential group
    s=s[w,n*n]
    m={} # this map is what defines our operation
    w.times{
        (1..w).each{               # for each element in the row of the table
            |i|m[s[0]+e[i-1]]=s[i] # put the value into the map
        }
        s=s[n,n*n]
    }
    s=e.find{|a| # s is the identity
        e.all?{|b|
            x=m[a+b]
            x==m[b+a]&&x==b # is a the identity?
        }
    }
    e.all?{|a| # implicit return statement
        t = !0 # t = false
        e.all?{|b| # check for inverses
            x=m[a+b]
            t ||= x==m[b+a]&&x==s # t is now true if b was a's inverse
            e.all?{|c|
                m[m[a+b]+c]==m[a+m[b+c]] # check associativity
            }
        } && t
    }&&s
}

5
রুবির গল্ফিংয়ের বিস্ময়কে স্বাগতম! ;) এর nilচেয়ে একটি খাটো মিথ্যা মান false। ফাংশনগুলি ল্যাম্বডাস হিসাবে সংজ্ঞায়িত করা যেতে পারে q=->{abort'false'}(যদি তারা প্যারামিটার নেয় তবে []তাদের পরিবর্তে তাদের কল করতে ব্যবহার করুন ())। আমি বিশ্বাস করি .charsইতিমধ্যে আপনাকে একটি অ্যারে দেওয়া উচিত, সুতরাং কোনও প্রয়োজন নেই .to_a। আপনার যদি ট্রেলিংয়ের নতুন লাইনের দরকার না $><<হয় তবে putsপ্লাস স্পেসের চেয়ে এক বাইট কম । Hash.newপ্রথম বন্ধনী প্রয়োজন নেই। আমি এখনই দেখতে পাচ্ছি can এটা বজায় রাখা! ;)
মার্টিন এন্ডার

charsজিনিস বিজোড় হয়। আপনি রুবির কোন সংস্করণ ব্যবহার করছেন?
মার্টিন ইন্ডার

@ মার্টিনব্যাটনার ১.৯.৩
জাস্টিন

আহ, ঠিক আছে, আমি 2.1.5 নথির দিকে তাকিয়ে ছিল।
মার্টিন এন্ডার

1
আপনি প্রতিস্থাপন করতে পারেন Math.sqrt(...)সঙ্গে ...**0.5। এছাড়াও, a if bb&&a
আবারও

4

জাভাস্ক্রিপ্ট (ES6) 285 243 278

পরীক্ষার জন্য স্নিপেট চালান (এটি ES6 হওয়ায় এটি কেবল ফায়ারফক্সে কাজ করে)

2 বাগ সংশোধন করুন। আমি কেবল একটি উপায় যাচাই করে নিরপেক্ষ উপাদান খুঁজে পেতে ভুল করেছিলাম। (আরও ভাল পরীক্ষার মামলা দরকার !!!)

ডাবল ইনডেক্সের পরিবর্তে সরল স্ট্রিং কনটেনটেশন ব্যবহার করে সম্পাদনা করুন (যেমন @ কুইকুনাক্স), আমি জানি না আমি কী ভাবছিলাম। এছাড়াও, সরলিকৃত ইনভার্স চেক, এটি এখনও কাজ করা উচিত।

F=t=>(
  e=t.slice(0,d=Math.sqrt(t.length)|0),
  t=t.slice(d).match('.'.repeat(d+1),'g'),
  t.map(r=>{
    for(v=r[i=0],
        j=e.search(v)+1, // column for current row  element
        r!=v+e|t.some(r=>r[j]!=r[0])?0:n=v; // find neutral
        c=r[++i];
       )h[v+e[i-1]]=c
  },h={},n=''),
  e=[...e],!e.some(a=>e.some(b=>(
    h[a+b]==n&&--d, // inverse
    e.some(c=>h[h[a+b]+c]!=h[a+h[b+c]]) // associativity
  )
  ))&&!d&&n
)
input { width: 400px; font-size:10px }
Click on textbox to test - Result : <span id=O></span><br>
<input value='...' onclick='O.innerHTML=F(this.value)'> (?)
<br>Groups<br>
<input value='nezdnnezdeezdnzzdneddnez' onclick='O.innerHTML=F(this.value)'> (n)<br>
<input value='ptdkgbnmmbdtgkpmnpmkgdtnpbnptdkgbnmbngktdmbptgmnpbktddknmbpgdtktbpmndkggdpbnmtgk' onclick='O.innerHTML=F(this.value)'> (n)<br>
<input value='yrstuvwxuuxwvytsrvvuxwrytswwvuxsrytxxwvutsryyyrstuvwxrrstyvwxusstyrwxuvttyrsxuvw' onclick='O.innerHTML=F(this.value)'> (y)<br>
<input value='01235789ab46001235789ab4611234089ab6572234519ab67087789a623450b1889ab7345016299ab684501273aab6795012384bb678a0123495334502ab67819445013b67892a5501246789a3b66789b12345a0'onclick='O.innerHTML=F(this.value)'> (0)<br>
Non groups <br>
<input value='12345112345224153335421441532553214' onclick='O.innerHTML=F(this.value)'> (FAIL)<br>
<input value='123456711234567223167543312764544765123556714326645327177542316' onclick='O.innerHTML=F(this.value)'> (FAIL)<br>
<input value='012300123113132210333333' onclick='O.innerHTML=F(this.value)'> (FAIL)<br>


2

হাস্কেল 391 বি

import Data.Maybe
import Data.List
o a b=elemIndex b a
l£a=fromJust.o a$l
a§b=[a!!i|i<-b]
f s|isJust j&&and(map(isJust.o h)s)&&and[or[p%q==e|q<-h]&&and[p%(q%r)==(p%q)%r|q<-h,r<-h]|p<-h]=[e]|True="!"where n=floor$(sqrt(fromIntegral$length s+1))-1;h=take n s;g=[s§[a..b]|(a,b)<-zip[1+n,2+n+n..][n+n,3*n+1..(n+1)^2]];v=s§[n,1+2*n..n+n*n];a%b=g!!(b£v)!!(a£h);j=o g h;e=v!!fromJust j

অভিশাপ import!

import Data.Maybe
import Data.List

{- rename elemIndex to save characters -}
o a b=elemIndex b a

{- get the index of l in a -}
l£a=fromJust.o a$l

{- extract a sublist of a with indices b -}
a§b=[a!!i|i<-b]

f s |isJust j {-Identity-}
     &&and (map (isJust.o h) s) {-Closure-}
     &&and[
        or [p%q==e|q<-h] {-Inverse-}
        && and [ p%(q%r)==(p%q)%r | q<-h,r<-h ] {-Associativity-}
     |
        p<-h
     ]=[e]
    |True="!"
    where
    {-size-}    n=floor$(sqrt(fromIntegral$length s+1))-1
    {-horiz-}   h=take n s
    {-table-}   g=[s§[a..b]|(a,b)<-zip[1+n,2+n+n..][n+n,3*n+1..(n+1)^2]]
    {-vert-}    v=s§[n,1+2*n..n+n*n]
    {-operate-} a%b=g!!(b£v)!!(a£h)
                j=o g h {-index of the first row identical to the top-}
    {-ident-}   e=v!!fromJust j

ব্যাখ্যা

f::String->Stringউভয়ই স্ট্রিং মানচিত্র e::Char, পরিচয় উপাদান, বা !

whereদফা ভেরিয়েবল এবং ফাংশন একটি গুচ্ছ, যা আমি মন্তব্য করেছি তৈরি করে; অনুভূমিক এক v::[Int]উপাদানগুলির উল্লম্ব তালিকা h::[Int]

%::Char->Char->Char গোষ্ঠী অপারেশনটিকে তার যুক্তিগুলিতে প্রয়োগ করে।

g::[[Int]]গ্রুপ টেবিল (ব্যবহারের জন্য ডিফেরেন্সিং জন্য %)

j::Maybe Intvএটি উপস্থিত থাকলে পরিচয় সূচকটি অন্তর্ভুক্ত করে , অন্যথায় Nothing, যে কারণে পরিচয়ের isJust jশর্তটি রয়েছে f


আপনি এখানে কি চলছে তা একটু ব্যাখ্যা করতে পারেন?
xebtl

আমি কয়েকটি মন্তব্য যুক্ত করেছি, তবে মৌলিক বক্তব্যটি হ'ল 'টেস্টগুলিকে গ্রুপ টেবিলে প্রয়োগ করুন'। নোট যে {- -}একটি মন্তব্য। আপনার আরও কোনও নির্দিষ্ট প্রশ্ন রয়েছে, বা এটি কী তা পরিষ্কার করে দেয়?
আলেকজান্দার-ব্রেট

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