মাউফাং লুপগুলি গণনা করা হচ্ছে


17

একটি লুপ একটি খুব সহজ বীজগণিত কাঠামো। এটি একটি টিউপল (জি, +) যেখানে জি একটি সেট এবং + বাইনারি অপারেটর জি × জি → জি । যে + + থেকে দুটি উপাদান লাগে জি এবং একটি নতুন উপাদান ফেরৎ। অপারেটরের দুটি বৈশিষ্ট্যও পূরণ করতে হবে

  • বাতিল: প্রতিবার জন্য একটি এবং মধ্যে জি সেখানে অনন্য বিদ্যমান এক্স এবং ওয়াই মধ্যে জি যেমন যে

    a + x = b
    y + a = b
    
  • পরিচয়: একটা হল মধ্যে জি যেমন যে প্রত্যেক জন্য একটি মধ্যে জি

    e + a = a
    a + e = a
    

আপনি যদি একটি গোষ্ঠীর ধারণার সাথে পরিচিত হন তবে আপনি লক্ষ্য করতে পারেন একটি লুপটি এমন একটি গোষ্ঠী যার কোনও সহযোগী সম্পত্তি নেই।

লুপগুলি খুব সহজ তাই লোকেরা আরও আকর্ষণীয় এমন নতুন কাঠামো তৈরি করতে আরও নিয়ম যুক্ত করতে পছন্দ করে। এরকম একটি কাঠামো হ'ল একটি মৌফাং লুপ যা একটি লুপ যা জি এর মধ্যে নিম্নোক্ত চারটি পরিচয় f, x , y এবং z পূরণ করে

z + (x + (z + y)) = ((z + x) + z) + y
((y + z) + x) + z = y + (z + (x + z))
(z + x) + (y + z) = (z + (x + y)) + z
(z + x) + (y + z) = z + ((x + y) + z)

উদাহরণস্বরূপ নিম্নলিখিত কেলে টেবিলটি একটি মৌফ্যাং লুপ উপস্থাপন করে:

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

(যদি আপনি পরিচিত না হন তবে কেলে টেবিলটি একটি বর্গক্ষেত্রের ম্যাট্রিক্স এম যেখানে এম i, j সমান i + j সমান ।

আমরা দেখাতে পারি যে এটি সহজেই এটির একটি পরিচয় রয়েছে 0। বাতিলকরণ প্রদর্শন করা একটু কঠিন তবে একটি নিষ্ঠুর শক্তি পদ্ধতির এই টেবিলটি দেয়

b a → 0 1 2 3
↓
0     0 1 2 3
1     1 0 3 2
2     2 3 0 1
3     3 2 1 0

যেখানে আমাদের উপাদানগুলির সমাধান

a + x = b = x + a

(আপনি খেয়াল করতে পারেন যে এই টেবিলটি আমাদের কেলে টেবিলের সমান I'll আমি এই মৌফাং লুপের ক্ষেত্রে এটি কেন, তা খুঁজে বের করার জন্য এটি পাঠকের কাছে অনুশীলন হিসাবে ছেড়ে দেব)

এখন আমাদের কাঠামোর জন্য আমাদের মাউফ্যাং পরিচয় যাচাই করতে হবে। নির্দিষ্ট কাঠামোর জন্য এটি করার জন্য দুটি উপায় রয়েছে প্রথম উপায়টি হ'ল এটি সাহসী এবং এইভাবে স্বয়ংক্রিয়ভাবে মানদণ্ডগুলি পূরণ করে, তবে এটি সাধারণভাবে কাজ করবে না সুতরাং ফলস্বরূপ আমরা ফলপ্রসূটিকে জোর করব। এখানে প্রতিটি অভিব্যক্তিতে 4 টির মান সম্পন্ন 3 টি বিনামূল্যে ভেরিয়েবল রয়েছে। এর অর্থ আমাদের 7 * 4 3 বা 448 গণনা সম্পাদন করতে হবে । আমি কাঁচা গণনা ছেড়ে দেব তবে এখানে কিছু হাস্কেল রয়েছে যা আপনি এটি যাচাই করতে ব্যবহার করতে পারেন

কার্য

ইনপুট আউটপুট হিসাবে একটি ধনাত্মক পূর্ণসংখ্যা n দেওয়া হয়েছে যাতে অর্ডার এন রয়েছে এমন মৌফাং লুপের সংখ্যা । (একটি গ্রুপের ক্রমটি সেট আকারের)

এটি তাই কম বাইট ভাল হওয়ার সাথে বাইটে উত্তরগুলি দেওয়া হবে।

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

এখানে প্রথম 71 ইনপুটগুলির জন্য মাউফাং লুপের সংখ্যা রয়েছে

1,1,1,2,1,2,1,5,2,2,1,6,1,2,1,19,1,5,1,6,2,2,1,20,2,2,5,5,1,4,1,122,1,2,1,18,1,2,2,19,1,7,1,5,2,2,1,103,2,5,1,6,1,17,2,17,2,2,1,18,1,2,4,4529,1,4,1,6,1,4,1

1
" জি × জি " কী?
এরিক আউটগল্ফার

8
আমি এই চ্যালেঞ্জটিকে অগ্রাহ্য করেছি, কারণ এতে জড়িত গণিতটি যথেষ্ট ঝোঁকযুক্ত এবং যারা এই চ্যালেঞ্জটি পড়েন তাদের পক্ষে অ্যাক্সেসযোগ্য নয়। সম্ভবত, একটি কাজের উদাহরণ সহায়ক হবে (উদাহরণস্বরূপ, 5 ম 8 ম ইনপুট ফলাফল কেন ব্যাখ্যা করে)? আপনি যদি একটি যোগ করেন তবে আমি মনে করি আমি আমার ভোট প্রত্যাহার করব, তবে অবশ্যই এটি আপনার হাতে।

6
@ ইয়ানজিডেল আপনি কী বোঝাতে চান বাজে কথা বলতে চান? এটি অবশ্যই আরও উন্নত গাণিতিক বিষয় তবে আমি মনে করি না যে আমাদের পিপিসিজিতে গণিত থেকে দূরে সরে যাওয়া উচিত। আমি একটি মৌফ্যাং লুপের একটি কাজের উদাহরণ যুক্ত করব, তবে হাতে হাতে একটি সম্পূর্ণ ইনপুট গণনা করা সম্ভবত চ্যালেঞ্জকে বিশৃঙ্খলা করবে।
পোস্ট রক গার্ফ হান্টার

2
@ উইট উইজার্ড "ফ্লফি" হিসাবে সম্ভবত সম্ভবত "উন্নত"। সম্পাদনা: আমি ডাউনটি প্রত্যাহার করেছিলাম, তবে এখনও একটি উদাহরণের অপেক্ষায় রয়েছি।

1
@Giuseppe কি খুব খারাপ মনে করেন না, আমি যখন পুলিশের সংশোধন এটা একটি ভুল 12না 11। আমার বুঝতে হবে কারণ 11এটি প্রাথমিক সংখ্যা।
পোস্ট রক গার্ফ হান্টার

উত্তর:


4

পাইথন ঘ , 475 410 বাইট

কিছু বাইট সংরক্ষণ করার জন্য মিঃ এক্সকোডারকে ধন্যবাদ!

65 বাইট সংরক্ষণ করতে সূত্রের প্রতিসাম্য ব্যবহার করুন। হ্যাঁ, অনেক কিছু।

from itertools import*
n=int(input())
P=permutations
R=[*range(n)]
u=[]
A=all
S=sorted
for T in P(P(R),n):u+=[T]*(A(A(R==S(x)for x in
t)and any([*x]==S(x)for x in t)and
A(t[z][t[x][t[z][y]]]==t[t[t[z][x]][z]][y]and
t[t[z][x]][t[y][z]]==t[t[z][t[x][y]]][z]for x in R
for y in R for z in R)for t
in(T,[*zip(*T)]))and A(A(1-A(p[T[i][j]]==U[p[i]][p[j]]for i in R
for j in R)for p in P(R))for U in u))
print(len(u))

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


কিছু andদ্বারা প্রতিস্থাপন করা যেতে পারে* , বাইকোন্টে কম ফলাফল হয় তবে উল্লেখযোগ্যভাবে ধীর মৃত্যুর সময় ব্যয় করে:

পাইথন ঘ , ??? বাইট

[এখানে কোড রাখুন]

(অবশ্যই সকলেই *প্রোগ্রামটি উল্লেখযোগ্যভাবে ধীর করে দেয় না, কেবলমাত্র তাদের মধ্যে কিছুগুলি সমালোচক হয়)


Ungolfed:

from itertools import *
n = 4 # int(input())
rangeN = list(range(n))

def is_moufang_loop(T):
    A = tuple(zip(*T))
    return all(
        all(sorted(x) == rangeN for x in t)
        and any(list(x) == sorted(x) for x in t)
        and all(
                T[z][T[x][T[z][y]]] == T[T[T[z][x]][z]][y]
            and T[T[z][x]][T[y][z]] == T[T[z][T[x][y]]][z]
            for x in rangeN for y in rangeN for z in rangeN)
        for t in (T, A)
    )

def isomorphic(loop1, loop2):
    for p in permutations(rangeN):
        if all(
            p[loop1[i][j]] == loop2[p[i]][p[j]]
            for i in rangeN
            for j in rangeN
        ): return True
    return False

unique_moufang_loops = []
for x in [
        cayley_table 
        for cayley_table in permutations(permutations(rangeN), n)
        if is_moufang_loop(cayley_table)
]:
    if all(not isomorphic(x, y) for y in unique_moufang_loops):
        unique_moufang_loops.append(x)

print(len(unique_moufang_loops))

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

কোনও স্ক্রোল বার নেই ...


ব্যাখ্যা:

প্রোগ্রামটি বেশ সহজ।

  • প্রতিটি সম্ভাব্য "বাইনারি অপারেটর" কেলে টেবিল (0-ইনডেক্সিং) দ্বারা প্রতিনিধিত্ব করা হয়।
  • "পরিচয়" সম্পত্তি অস্তিত্ব আছে যে বোঝা eযেমন যে উভয় e'ম সারি এবং e' ম কলাম সমান [0, 1, 2, ..., n-1], যা একই শর্ত হিসাবে হয়

    অ্যারে Tএবং এর ট্রান্সপোজ উভয়ের সমান একটি সারি রয়েছে [0, 1, 2, ..., n-1]

  • "বাতিলকরণ" সম্পত্তি সমান

    প্রতিটি সারি এবং প্রতিটি কলামই এর অনুক্রম [0, 1, 2, ..., n-1]

সুতরাং, অংশ

all(
        all(sorted(x) == rangeN for x in t) 
        and any(list(x) == sorted(x) for x in t) 
        for t in (T, A))

কোড পরীক্ষা করে যে। (অ্যারে Tএবং এর স্থানান্তরের সমস্ত সারিটির জন্য A, এটি সাজানো হচ্ছে সমান rangeNএবং উভয়টিতে একটি সারি রয়েছে TএবংA এটি নিজের অনুসারে বাছাই করা সমান)

একটি মৌফ্যাং লুপের চারটি শর্ত ম্যানুয়ালি পরীক্ষা করা হয়।

z + (x + (z + y)) = ((z + x) + z) + y
((y + z) + x) + z = y + (z + (x + z))
(z + x) + (y + z) = (z + (x + y)) + z
(z + x) + (y + z) = z + ((x + y) + z)

কোডে, (a + b)হিসাবে প্রতিনিধিত্ব করা হয় T[a][b]। (কেলে টেবিল হিসাবে উপস্থাপনের কারণে)। সদৃশতা এড়াতে পাইথন চেইন সমতা তুলনা ব্যবহার করুন (z + x) + (y + z)

তবে সূত্রটি প্রতিসম:

যদি আমরা +প্রথম সূত্রে অপারেন্ডগুলি স্যুইচ করি তবে আমরা দ্বিতীয় সূত্রটি পাই; আর যদি আমরা operands সুইচ +তৃতীয় সূত্র, আমরা সঙ্গে চতুর্থ সূত্র পেতে xএবং yঅদলবদল জায়গা।

উল্লেখ্য, কেলে টেবিলের স্থানান্তর অপারেশনগুলি সরিয়ে নেওয়া বাইনারি অপারেটরগুলির সমতুল্য। (x + y -> y + x )

সবশেষে, কয়েলে টেবিলের সমস্ত প্রার্থী বাছাই করা হয়েছে

permutations(permutations(rangeN), n) 

যাতে প্রতিটি সারিটি rangeN(যা হয় [0, 1, 2, ..., n-1]) এর অনুক্রম হয় এবং nআলাদা আলাদা সারি থাকে।

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