এন-মুবার্স: আমি কতটা অনন্ত বোর্ডে পৌঁছতে পারি?


48

একক চাল

বোর্ডটি সীমাহীন দাবা বোর্ডের মতো একটি অসীম 2 মাত্রিক বর্গ গ্রিড। মান এন (একটি এন-মুভার ) সহ একটি টুকরা যে কোনও স্কোয়ারে চলে যেতে পারে যা তার বর্তমান বর্গ থেকে (ইউক্লিডিয়ান দূরত্ব পরিমাপিত কেন্দ্র থেকে কেন্দ্র) ঠিক N এর বর্গমূলের দূরত্ব any

উদাহরণ স্বরূপ:

  • 1-মুভার অনুভূমিকভাবে বা উল্লম্বভাবে সংলগ্ন যে কোনও স্কোয়ারে যেতে পারে
  • একটি 2-মুভার তির্যকভাবে সংলগ্ন যে কোনও স্কোয়ারে যেতে পারে
  • একটি 5-মুভার দাবা নাইটের মতো চলে

মনে রাখবেন যে সমস্ত এন-মুভাররা নড়াচড়া করতে পারে না। 3-মুভারটি তার বর্তমান বর্গক্ষেত্রটি কখনই ছাড়তে পারে না কারণ বোর্ডের স্কোয়ারগুলির কোনওটিই বর্তমান বর্গ থেকে ঠিক 3 এর দূরত্ব নয়।

একাধিক চাল

যদি বারবার চলতে দেওয়া হয় তবে কিছু টুকরো বোর্ডের যে কোনও স্কোয়ারে পৌঁছে যেতে পারে। উদাহরণস্বরূপ, একটি 1-মুভার এবং 5-মুভার উভয়ই এটি করতে পারে। একটি 2-মুভার কেবল তির্যকভাবে স্থানান্তর করতে পারে এবং স্কোয়ারের অর্ধেক পর্যন্ত পৌঁছতে পারে। একটি টুকরা যা 3-মুভারের মতো চলাচল করতে পারে না, কোনও স্কোয়ারে পৌঁছতে পারে না (কোনও গতিবিধি না ঘটলে প্রারম্ভিক বর্গটি "পৌঁছে গেছে" হিসাবে গণনা করা হয় না)

1-প্রস্তাবক 2-প্রস্তাবক 3-প্রস্তাবক 4-প্রস্তাবক 5-প্রস্তাবক 8-প্রস্তাবক 9-প্রস্তাবক 10-প্রস্তাবক 20 প্রস্তাবক 25 প্রস্তাবক 40 প্রস্তাবক 64-প্রস্তাবক 65-প্রস্তাবক 68 প্রস্তাবক

চিত্রগুলি দেখায় যে কোন স্কোয়ারে পৌঁছানো যায়। হোভার সম্পর্কে আরও বিশদ। বৃহত্তর চিত্রের জন্য ক্লিক করুন।

  • 1 বা ততোধিক মুভিগুলিতে পৌঁছতে পারে এমন স্কোয়ারগুলি কালোতে চিহ্নিত রয়েছে
  • ঠিক 1 পদক্ষেপে পৌঁছনযোগ্য স্কোয়ারগুলি লাল টুকরা দ্বারা দেখানো হয়
    (3-মুভার বাদে, যা চলতে পারে না)

প্রদত্ত এন-মুভারটি বোর্ডের অনুপাতের কত অংশে পৌঁছতে পারে?

ইনপুট

  • একটি ধনাত্মক পূর্ণসংখ্যা এন

আউটপুট

  • বোর্ডের অনুপাত যে কোনও এন-মুভার পৌঁছতে পারে
  • এটি 0 থেকে 1 পর্যন্ত সংখ্যা (উভয়ই অন্তর্ভুক্ত)
  • এই চ্যালেঞ্জের জন্য, 1/4 এর মতো সর্বনিম্ন পদগুলিতে ভগ্নাংশ হিসাবে আউটপুট অনুমোদিত

সুতরাং ইনপুট জন্য 10, উভয় 1/2এবং 0.5গ্রহণযোগ্য আউটপুট। পৃথক অংকের এবং ডিনোমিনেটর হিসাবে আউটপুট এছাড়াও গ্রহণযোগ্য, এমন ভাষা অন্তর্ভুক্ত হতে পারে যা ভাসমান বা ভগ্নাংশকে সমর্থন করে না। উদাহরণস্বরূপ, 1 2বা [1, 2]

পূর্ণসংখ্যা আউটপুটগুলির জন্য (0 এবং 1), নিম্নলিখিত যে কোনও গ্রহণযোগ্য বিন্যাস:

  • 0 জন্য: 0, 0.0, 0/1, 0 1,[0, 1]
  • 1: 1, 1.0, 1/1, 1 1,[1, 1]

স্কোরিং

এটি কোড গল্ফ। স্কোর হ'ল বাইটে কোডের দৈর্ঘ্য। প্রতিটি ভাষার জন্য, সংক্ষিপ্ততম কোডটি জয়ী হয়।

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

বিন্যাসে input : output as fraction : output as decimal

  1 : 1     : 1
  2 : 1/2   : 0.5
  3 : 0     : 0
  4 : 1/4   : 0.25
  5 : 1     : 1
  6 : 0     : 0
  7 : 0     : 0
  8 : 1/8   : 0.125
  9 : 1/9   : 0.1111111111111111111111111111
 10 : 1/2   : 0.5
 13 : 1     : 1
 16 : 1/16  : 0.0625
 18 : 1/18  : 0.05555555555555555555555555556
 20 : 1/4   : 0.25
 25 : 1     : 1
 26 : 1/2   : 0.5
 64 : 1/64  : 0.015625
 65 : 1     : 1
 72 : 1/72  : 0.01388888888888888888888888889
 73 : 1     : 1
 74 : 1/2   : 0.5
 80 : 1/16  : 0.0625
 81 : 1/81  : 0.01234567901234567901234567901
 82 : 1/2   : 0.5
144 : 1/144 : 0.006944444444444444444444444444
145 : 1     : 1
146 : 1/2   : 0.5
148 : 1/4   : 0.25
153 : 1/9   : 0.1111111111111111111111111111
160 : 1/32  : 0.03125
161 : 0     : 0
162 : 1/162 : 0.006172839506172839506172839506
163 : 0     : 0
164 : 1/4   : 0.25
241 : 1     : 1
242 : 1/242 : 0.004132231404958677685950413223
244 : 1/4   : 0.25
245 : 1/49  : 0.02040816326530612244897959184
260 : 1/4   : 0.25
261 : 1/9   : 0.1111111111111111111111111111
288 : 1/288 : 0.003472222222222222222222222222
290 : 1/2   : 0.5
292 : 1/4   : 0.25
293 : 1     : 1
324 : 1/324 : 0.003086419753086419753086419753
325 : 1     : 1
326 : 0     : 0
360 : 1/72  : 0.01388888888888888888888888889
361 : 1/361 : 0.002770083102493074792243767313
362 : 1/2   : 0.5
369 : 1/9   : 0.1111111111111111111111111111
370 : 1/2   : 0.5
449 : 1     : 1
450 : 1/18  : 0.05555555555555555555555555556
488 : 1/8   : 0.125
489 : 0     : 0
490 : 1/98  : 0.01020408163265306122448979592
520 : 1/8   : 0.125
521 : 1     : 1
522 : 1/18  : 0.05555555555555555555555555556
544 : 1/32  : 0.03125
548 : 1/4   : 0.25
549 : 1/9   : 0.1111111111111111111111111111
584 : 1/8   : 0.125
585 : 1/9   : 0.1111111111111111111111111111
586 : 1/2   : 0.5
592 : 1/16  : 0.0625
593 : 1     : 1
596 : 1/4   : 0.25
605 : 1/121 : 0.008264462809917355371900826446
610 : 1/2   : 0.5
611 : 0     : 0
612 : 1/36  : 0.02777777777777777777777777778
613 : 1     : 1
624 : 0     : 0
625 : 1     : 1

10
আমি ম্যাথ.এসইতে এই প্রশ্নটি পোস্ট করেছি: গণিত.স্ট্যাকেক্সেঞ্জার.কম
সেকশনস /

আকর্ষণীয় অনুমান!
ট্রাইকোপল্যাক্স

1
"একটি টুকরা যা 3-মুভারের মতো চলতে পারে না, কোনও স্কোয়ারে পৌঁছতে পারে না"। আকর্ষণীয়ভাবে যথেষ্ট, এমনকি যদি আপনি বোর্ডটি অসীম হয় তবে এটি শুরু স্কোয়ারটি গণনা করে, এটি অনুপাত হিসাবে এখনও 0 তে রূপান্তর করে।
গরুর মাংস

@ বিফস্টার ভাল পয়েন্ট অনন্তের পথে না গিয়ে সীমা সন্ধান করা সহজ করার জন্য আমি এই পথে
চললাম

2
@ infmagic2047 এর গণিত th প্রধান ফ্যাক্টরিং পদ্ধতির সম্পর্কে প্রশ্নটির উত্তর এখন একটি সম্পূর্ণ প্রমাণ সহ
আরজান জোহানসেন

উত্তর:


19

জাভাস্ক্রিপ্ট (নোড.জেএস) , 144 138 125 74 73 70 বাইট

f=(x,n=2,c=0)=>x%n?x-!c?f(x,n+1)/(n%4>2?n/=~c&1:n%4)**c:1:f(x/n,n,c+1)

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

-4 বাইট ধন্যবাদ @ আরনাউল্ড!

আসল পন্থা, 125 বাইট

a=>(F=(x,n=2)=>n*n>x?[x,0]:x%n?F(x,n+1):[n,...F(x/n,n)])(a).map(y=>r-y?(z*=[,1,.5,p%2?0:1/r][r%4]**p,r=y,p=1):p++,z=r=p=1)&&z

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

ভিডিও পাই দ্বারা অনুপ্রাণিত 3 ব্লু 1 ব্রাউন দ্বারা প্রাথমিক নিয়মিত লুকানো in

সংখ্যার গুণককরণের প্রতিটি প্রধান ফ্যাক্টর পিএন এর জন্য (পিএন) গণনা করুন :

  • যদি এন বিজোড় হয় এবং পি3 (Mod 4) - (পিএন)=0 । কারণ সেখানে যাওয়ার কোনও জায়গা নেই।
  • যদি এনসমান হয় এবং পি3 (Mod 4) - (পিএন)=1পিএন
  • পি=2(2এন)=12এন
  • পি1 (Mod 4)(পিএন)=1

এই সমস্ত ফাংশন মানগুলি গুণ, আমরা সেখানে।

হালনাগাদ

ম্যাথ.এসই থেকে অবদানকারীদের প্রচেষ্টার জন্য ধন্যবাদ, অ্যালগরিদম এখন একটি প্রমাণ দ্বারা সমর্থিত


ভিডিওটিতে কি প্রমাণ রয়েছে? আমি এখন কয়েক ঘন্টা ধরে এই ফলাফলটি প্রমাণ করার চেষ্টা করেছি তবে আমি এটি বের করতে পারি না।
infmagic2047

1
এন

3
কুই=Πপিপিপি{2,3} (Mod 4)পিপি

1
@ infmagic2047 এর গণিত this এই পদ্ধতির বিষয়ে প্রশ্নের এখন একটি সম্পূর্ণ প্রমাণ সহ উত্তর রয়েছে
আরজান জোহানসেন

11

গণিত, 80 বাইট

d[n_]:=If[#=={},0,1/Det@LatticeReduce@#]&@Select[Tuples[Range[-n,n],2],#.#==n&];

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

আরও স্পষ্টতই, আমাদের কয়েকটি ভেক্টর সংকলন দেওয়া হয় - যাহাদের দৈর্ঘ্য বর্গাকার N - এবং সমস্ত সংখ্যক ভেক্টরগুলির তুলনায় এই ভেক্টরগুলির সম্ভাব্য পরিমাণগুলির সেটগুলির ঘনত্বের গণনা করতে বলেছিলেন। নাটকের গণিতটি হ'ল আমরা সর্বদা দুটি ভেক্টর (এবং তাদের বিপরীত) খুঁজে পেতে পারি যা "উত্পন্ন" হয় (যার অঙ্কগুলি হয়) মূল সংগ্রহ হিসাবে একই সেট। ল্যাটিসরেডুস ঠিক তাই করে।

আপনার যদি মাত্র দুটি ভেক্টর থাকে তবে আপনি প্রতিটি অ্যাক্সেসযোগ্য পয়েন্টকে কেন্দ্র করে একটি অভিন্ন সমান্তরাল চিত্র আঁকার কল্পনা করতে পারেন, তবে যার প্রান্ত দৈর্ঘ্য প্রদত্ত ভেক্টর, যেমন বিমান এই সমান্তরালগুলি দ্বারা সম্পূর্ণরূপে টাইলড থাকে is (উদাহরণস্বরূপ, এন = 2 এর জন্য "হীরা" আকারের একটি জাল) কল্পনা করুন)। প্রতিটি সমান্তরাল ক্ষেত্রের ক্ষেত্র দুটি উত্পাদক ভেক্টরের নির্ধারক। বিমানের কাঙ্ক্ষিত অনুপাত হ'ল এই অঞ্চলের পারস্পরিক ক্রিয়াকলাপ, যেহেতু প্রতিটি সমান্তরাল অঞ্চলে এটিতে কেবল একটি পৌঁছনীয় পয়েন্ট থাকে।

কোডটি মোটামুটি সরল বাস্তবায়ন: ভেক্টরগুলি জেনারেট করুন, ল্যাটিস্রেডুস ব্যবহার করুন, নির্ধারক নিন এবং তারপরে পরস্পরকে গ্রহণ করুন। (যদিও এটি সম্ভবত আরও গল্ফ করা যেতে পারে)


76 বাইট:d@n_:=Boole[#!={}]/Det@LatticeReduce@#&@Select[Range[-n,n]~Tuples~2,#.#==n&]
u54112

11

পরিষ্কার , 189 185 172 171 বাইট

import StdEnv
$n#r=[~n..n]
#p=[[x,y]\\x<-r,y<-r|x^2+y^2==n]
=sum[1.0\\_<-iter n(\q=removeDup[k\\[a,b]<-[[0,0]:p],[u,v]<-q,k<-[[a+u,b+v]]|all(\e=n>=e&&e>0)k])p]/toReal(n^2)

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

nপ্রথম কোয়াড্রেন্টে উত্সের কোণে বিস্তৃত দৈর্ঘ্যের বর্গক্ষেত্রের প্রতিটি অবস্থানের অ্যাক্সেসযোগ্য আবিষ্কার করে এবং তারপরে n^2সমস্ত কোষের অংশটি পৌঁছনীয় হয়ে ভাগ করে দেয়।

এটি কাজ করে কারণ:

  • পুরো nঅ্যাক্সেসযোগ্য প্লেনটি এই -পাশের দৈর্ঘ্যের বর্গক্ষেত্রের ওভারল্যাপিং অনুলিপি হিসাবে বিবেচনা করা যেতে পারে , প্রতিটিই উত্স থেকে এমনভাবে পৌঁছানোর যোগ্য বিন্দুতে কোণে তৈরি হয়েছে যেন এটি উত্স।
  • সমস্ত আন্দোলনগুলি লক্ষণগুলির সাথে চারটি গ্রুপে আসে ++ +- -+ --, ওভারল্যাপিং টাইলিংগুলি অন্য তিনটি চতুর্ভুজকে মিরর করে এবং ঘোরানোর মাধ্যমে প্রসারিত করতে দেয়।

আমার ক্ষমাপ্রার্থী - আমি পরীক্ষার কেসগুলি N = 10 থেকে N = 13 এ যাচ্ছিলাম, যেখানে আপনার পরীক্ষার ক্ষেত্রে N = 11 এবং N = 12ও অন্তর্ভুক্ত রয়েছে। আপনি এন = 13 এর পক্ষে সত্যই সঠিক। আমার কাছ থেকে +1 :)
ট্রাইকোপলাক্স

1
@ ট্রাইকোপলাক্স আবার একই বিভ্রান্তি এড়াতে আমি প্রশ্নের সাথে মিল রেখে পরীক্ষাগুলি পরিবর্তন করেছি
ousurous

আমি আরও এন = 145 পর্যন্ত পরীক্ষা করেছি এবং সবই সঠিক। যদিও 60 সেকেন্ড সময় শেষ হওয়ার কারণে টিআইওতে আমি 146 টি পরীক্ষা করতে পারিনি। আমি এখানে উত্তরের জন্য খুব দীর্ঘ সময়ের জন্য প্রত্যাশা করছি ...
ট্রাইকোপলাক্স

1
যেহেতু আমি এটি উপলব্ধি করতে কিছুটা সময় নিয়েছি: কমপক্ষে একটি পদক্ষেপ (ক, খ) থাকলে বর্গাকার কোণগুলি পৌঁছনীয় কারণ, জটিল সমীকরণ (a + দ্বি) (a-দ্বি) = a ^ 2 + b ^ 2, যা ভেক্টর আকারে (N, 0) = a (a, b) + b (b, -a) হয়ে যায়।
আরজান জোহানসেন

5

রেটিনা 0.8.2 , 126 82 বাইট

.+
$*
+`^(1(1111)+)(?<!^\3+(11+))(\1)*$
1$#4$*
^(?!((^1|11\2)+)\1?$)1+
0
11+
1/$.&

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। ব্যাখ্যা:

.+
$*

অ্যানারিতে রূপান্তর করুন।

+`^(1(1111)+)(?<!^\3+(11+))(\1)*$
1$#4$*

বারবার ফর্মের প্রধান কারণগুলি দ্বারা বিভক্ত করুন 4k+1

^(?!((^1|11\2)+)\1?$)1+
0

ফলাফলটি বর্গক্ষেত্র বা দ্বিগুণ বর্গক্ষেত্র না হলে ফলাফল শূন্য।

11+
1/$.&

দশমিক ভগ্নাংশ হিসাবে পারস্পরিক গণনা করুন।


5

রেজেক্স (ইসিএমএসক্রিপ্ট, পারস্পরিক ক্রিয়াকলাপ), 256 163 157 94 83 82 বাইট

-93 বাইট নিল ধন্যবাদ
-6 বাইট নিল আবার ধন্যবাদ
-63 ভাজক ক্যাপচার ছাড়া বিভাজন করে বাইট
-11 ধন্যবাদ বাইট ময়লা এর যুগপত ঐচ্ছিক-বিভাজন-বাই-ধ্রুবক এবং বর্গমূল
-1 বাইট শেষ ম্যাচ শর্ত সরিয়ে এবং দ্বিতীয় বিকল্প হিসাবে লুপের মধ্যে মান ক্যাপচারটি ফেরান, গ্রিমিকে ধন্যবাদ

এটি শিয়েরু আসাকোটোর জাভাস্ক্রিপ্ট উত্তরের মতো একই গণিত ব্যবহার করে ।

ইনপুটটি অচেনা অবস্থায় রয়েছে। যেহেতু একটি খাঁটি রেজেক্স কেবল ইনপুট থেকে একটি স্ট্রিং আউটপুট হিসাবে ফিরে আসতে পারে (অর্থাত্ ইনপুটটির চেয়ে কম বা সমান একটি প্রাকৃতিক সংখ্যা) বা "কোনও মিল নেই", তাই এই রেজেক্স বোর্ডের অনুপাতের পরস্পরকে প্রদান করে যা একটি এন-মুভার পোছাতে পারবে. যেহেতু 0 এর পারস্পরিক ক্রিয়াকলাপ অনন্ত, তাই এটি "মিলছে না" ক্ষেত্রে।

স্পিলার সতর্কতা : বর্গমূলের জন্য, এই রেজেক্সটি সাধারণ গুণিত অ্যালগরিদমের একটি বৈকল্পিক ব্যবহার করে, যা অ-স্পষ্ট এবং এটি আপনার নিজের পক্ষে কাজ করার জন্য একটি ফলপ্রসূ ধাঁধা হতে পারে। আরও তথ্যের জন্য, একটি রোকো নম্বর খুঁজুন এ আলগোরিদিমের এই ফর্মটির জন্য একটি ব্যাখ্যা দেখুন ।

পিপি1 (Mod 4)মিমি3 (Mod 4)মিমি/2মিমি

মিমি/2পি3 (Mod 4)

^(?=((?=(x+)(?!(\2+)(\2\3)+$)((\2{4})+$))\5|((xx?)(\8*))(?=(\7*)\9+$)\7*$\10)+$)\1

এটি অনলাইন চেষ্টা করুন!
এটি অনলাইন চেষ্টা করুন! (শুধু পরীক্ষার কেস)

^
(?=
    (                          # Capture return value, which will just be the value
                               # matched by the last iteration of this loop.
    # Divide tail by every one of its prime factors that's ≡1 mod 4, as many times as
    # possible.
        (?=
            (x+)               # \2 = quotient
            (?!(\2+)(\2\3)+$)  # Assert divisor is prime
            ((\2{4})+$)        # Assert divisor ≡1 mod 4; \5 = tool to make tail = \2
        )\5                    # tail = \2
    |
    # When the above alternative has been done as many times as possible:
    # Test if tail or tail/2 is a perfect square. If this test fails, the regex engine
    # will backtrack into the division loop above, and run the same perfect square
    # test on every previous number (effectively "multiplying" it by each previous P
    # in reverse, one at a time). This will not cause a failure of the test to change
    # into a success, however, because the odd power of a prime ≡3 mod 4 will see be
    # present in the number at every step. Allowing this backtracking to happen is a
    # golf optimization, and it does make the regex slower.
    # Failure of this perfect square test results in returning "no match" and indicates
    # a return value of zero.
        (                      # \7 = \8 * sqrt(tail / \8)
            (xx?)              # \8 = control whether to take sqrt(tail)
                               #                         or 2*sqrt(tail/2)
            (\8*)              # \9 = \7 - \8
        )
        (?=
            (\7*)\9+$          # Iff \8 * (\7 / \8)^2 == our number, then the first match
                               # here must result in \10==0
        )
        \7*$\10                # Test for divisibility by \7 and for \10==0
                               # simultaneously
    )+
    $                          # Require that the last iteration of the above loop was
                               # the perfect square test. Since the first alternative,
                               # the division, always leaves >=1 in tail, this guarantees
                               # that the last step is a successful perfect square test,
                               # or else the result will be "no match".
)
\1                             # Return value (which is a reciprocal)

রেজেক্স (ECMAScript + (? *), পারস্পরিক আউটপুট), 207 138 132 বাইট

বিভাজক ক্যাপচার না করে বিভাজন করে বাধা পেয়েছে (অর্থাত্ উপরের মতই এখন অভিন্ন)।

রেজেক্স (ইসিএমএসক্রিপ্ট 2018, পারস্পরিক আউটপুট), 212 140 134 বাইট

বিভাজক ক্যাপচার না করে বিভাজন করে বাধা পেয়েছে (অর্থাত্ উপরের মতই এখন অভিন্ন)।

রেজেক্স (ইসসিএমএসক্রিপ্ট, ভগ্নাংশ আউটপুট), 80 বাইট

এই সংস্করণে, \10সংখ্যকটি (শূন্যটি যদি আনসেট / এনপিসিবি হয় তবে) এবং ডিনোমিনেটরে ফিরে আসে \7

পারস্পরিক আউটপুট সংস্করণ থেকে পৃথক:

  • শূন্যের একটি ইনপুট সঠিকভাবে মোকাবেলা করা হয় না (এটি সেই সংস্করণের মতো "কোনও মিল নেই", তবে এটির বিপরীতে, এটি শূন্যের আউটপুট মানের সাথে মিলবে না)।
  • যদি নিখুঁত স্কোয়ার পরীক্ষা ব্যর্থ হয়, এটি বিভাগ লুপে ব্যাকট্র্যাক করে না, সুতরাং এই সংস্করণটি কার্যকর করার সময়টিতে আরও দক্ষ।

এর মতো আউটপুট স্পেসিফিকেশনের বড় ক্ষতি এটি হ'ল এটি প্রোগ্রামটিতে নেই।

((?=(x+)(?!(\2+)(\2\3)+$)((\2{4})+$))\5)*((((x)x?)(\9*))(?=(\8*)\11+$)\8*$\12|x)

এটি অনলাইন চেষ্টা করুন!
এটি অনলাইন চেষ্টা করুন! (শুধু পরীক্ষার কেস)

# No need to anchor, since we return a match for all inputs in the domain.
# Divide tail by every one of its prime factors that's ≡1 mod 4
(
    (?=
        (x+)               # \2 = quotient
        (?!(\2+)(\2\3)+$)  # Assert divisor is prime
        ((\2{4})+$)        # Assert divisor ≡1 mod 4; \5 = tool to make tail = \2
    )\5                    # tail = \2
)*
# Test if tail or tail/2 is a perfect square. If this test succeeds, return tail as
# the denominator and 1 as the numerator.
(                          # \7 = denominator output
    (                      # \8 = \9 * sqrt(tail / \9)
        ((x)x?)            # \9 = control whether to take sqrt(tail) or 2*sqrt(tail/2);
                           # \10 = numerator output (NPCG to represent zero)
        (\9*)              # \11 = \8 - \9
    )
    (?=
        (\8*)\11+$         # Iff \9 * (\8 / \9)^2 == our number, then the first match
                           # here must result in \12==0
    )
    \8*$\12                # Test for divisibility by \8 and for \12==0
                           # simultaneously
|
# Failure of the perfect square test results in returning 0/1 as the answer, so here
# we return a denominator of 1.
    x
)

1
দুঃখিত, আমি অবশ্যই যথেষ্ট পরীক্ষার ক্ষেত্রে এটি চেষ্টা করিনি।
নিল

1
@ ট্রাইকপ্লেক্স আপনি উত্তর দুটি নির্দিষ্ট ক্যাপচার গ্রুপের দৈর্ঘ্যের অনুপাত হিসাবে বিবেচনা করতে পারেন? (পুরো ম্যাচটি ফলাফল হতে অসুবিধা হওয়ায় এটি উত্তরটি আরও সংক্ষিপ্ত করে তুলবে))
নিল

1
@ নীলের মন্তব্য অনুসরণ করে, আমি পৃথক সংখ্যক এবং ডিনোমিনেটর হিসাবে আউটপুটকে অনুমতি দেওয়ার জন্য সম্পাদনা করেছি, যেহেতু খাঁটি পুনর্নির্মাণের ক্ষেত্রে এটি সবচেয়ে ছোট পরিবর্তন বলে মনে হয়। তবুও যদি সমস্যা হয় তবে আমাকে জানতে দিন
ট্রাইকোপ্লাক্স

1
-11 বাইট ব্যবহার (((xx?)(\9*))(?=(\8*)\10+$)\8*$\11)করে এন বা এন / 2 বর্গক্ষেত্র কিনা তা পরীক্ষা করে দেখুন ।
গ্রিমি

1
@ ডেডকোড পয়েন্টারগুলিকে ব্যাকরিফগুলিতে একটি বাইট ব্যয় দেওয়া উচিত নয় , যেহেতু সেগুলি ডিফল্টরূপে অনুমোদিত
গ্রিমি

4

জেলি ,  25  24 বাইট

ÆFµ%4,2CḄ:3+2Ịị,*/ʋ÷*/)P

প্রাইম ফ্যাক্টর রুটটি ব্যবহার করে একটি মোনাডিক লিঙ্ক।

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

কিভাবে?

ÆFµ%4,2CḄ:3+2Ịị,*/ʋ÷*/)P - Link: integer, n               e.g. 11250
ÆF                       - prime factor, exponent pairs        [[2,1], [3,2], [5,4]]
  µ                   )  - for each pair [F,E]:
    4,2                  -   literal list [4,2]
   %                     -   modulo (vectorises)                [2,1]  [3,0]  [1,0]
       C                 -   complement (1-x)                  [-1,0] [-2,1]  [0,1]
        Ḅ                -   from base 2                         -2     -3      1      
         :3              -   integer divide by three             -1     -1      0
           +2            -   add two (call this v)                1      1      3
                  ʋ      -   last four links as a dyad, f(v, [F,E])
             Ị           -     insignificant? (abs(x)<=1 ? 1 : 0)   1      1      0
                */       -     reduce by exponentiation (i.e. F^E)  2      9     625
               ,         -     pair v with that                   [1,2]  [1,9]  [3,625]
              ị          -     left (Ị) index into right (that)     1      1     625
                    */   -   reduce by exponentiation (i.e. F^E)    2      9     625
                   ÷     -   divide                                1/2    1/9  625/625
                       P - product                                 1/18 = 0.05555555555555555

পূর্ববর্তী 25 ছিল:

ŒRp`²S⁼ɗƇ⁸+€`Ẏ;Ɗ%³QƊÐLL÷²

পুরো প্রোগ্রাম ব্রুট ফোরার ; সম্ভবত প্রধান ফ্যাক্টর রুটের চেয়ে দীর্ঘ কোড (আমি পরে এটি চেষ্টা করতে পারি)।

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

স্থানাঙ্ক হিসাবে একক পদক্ষেপ তৈরি করে শুরু হয় ফলাফলগুলি সংগ্রহকারী সমস্ত পৌঁছে যাওয়া অবস্থানগুলি থেকে বারবার সরে যায় n, প্রতিটি স্থানাঙ্কের মডুলো গ্রহণ করে ( কোয়াড্র্যান্ট nদ্বারা একটি সীমাবদ্ধ nরাখার জন্য) এবং একটি নির্দিষ্ট পয়েন্ট পৌঁছানো পর্যন্ত এগুলি পৃথক রাখা; তারপরে অবশেষে গণনাটিকে ভাগ করেn^2


4

05 এ বি 1 ই , 27 26 25 বাইট

ÓεNØ©<iozë®4%D≠iyÈ®ymz*]P

@ শিরুআসাকোটোর জাভাস্ক্রিপ্টের উত্তরটির বন্দর, সুতরাং তাকেও উজ্জীবিত করতে ভুলবেন না!

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

Ó                   # Get all prime exponent's of the (implicit) input's prime factorization
                    #  i.e. 6 → [1,1]      (6 → 2**1 * 3**1)
                    #  i.e. 18 → [1,2]     (18 → 2**1 * 3**2)
                    #  i.e. 20 → [2,0,1]   (20 → 2**2 * 3**0 * 5**1)
                    #  i.e. 25 → [0,0,2]   (25 → 2**0 * 3**0 * 5**2)
 ε                  # Map each value `n` to:
  NØ                #  Get the prime `p` at the map-index
                    #   i.e. map-index=0,1,2,3,4,5 → 2,3,5,7,11,13
    ©               #  Store it in the register (without popping)
     <i             #  If `p` is exactly 2:
       oz           #   Calculate 1/(2**`n`)
                    #    i.e. `n`=0,1,2 → 1,0.5,0.25
      ë             #  Else:
       ®4%          #   Calculate `p` modulo-4
                    #    i.e. `p`=3,5,7,11,13 → 3,1,3,3,1
          D         #   Duplicate the result (the 1 if the following check is falsey)
           i       #   If `p` modulo-4 is NOT 1 (in which case it is 3):
             yÈ     #    Check if `n` is even (1 if truthy; 0 if falsey)
                    #     i.e. `n`=0,1,2,3,4 → 1,0,1,0,1
             ®ymz   #    Calculate 1/(`p`**`n`)
                    #     i.e. `p`=3 & `n`=2 → 0.1111111111111111 (1/9)
                    #     i.e. `p`=7 & `n`=1 → 0.14285714285714285 (1/7)
              *     #    Multiply both with each other
                    #     i.e. 1 * 0.1111111111111111 → 0.1111111111111111
                    #     i.e. 0 * 0.14285714285714285 → 0
 ]                  # Close both if-statements and the map
                    #  i.e. [1,1] → [0.5,0.0]
                    #  i.e. [1,2] → [0.5,0.1111111111111111]
                    #  i.e. [2,0,1] → [0.25,1.0,1]
                    #  i.e. [0,0,2] → [1.0,1.0,1]
  P                 # Take the product of all mapped values
                    #  i.e. [0.5,0.0] → 0.0
                    #  i.e. [0.5,0.1111111111111111] → 0.05555555555555555
                    #  i.e. [0.25,1.0,1] → 0.25
                    #  i.e. [1.0,1.0,1] → 1.0
                    # (and output implicitly as result)

4

এপিএল (ডায়ালগ প্রসারিত) , 21 বাইট

এই প্রোগ্রামটি প্রধান ফ্যাক্টর রুট ব্যবহার করে। আমি অ্যাডম, ডিজাইমা, এইচ.পি.উইজ, জে.সাল্লা, এবং এনজিওর কাছে bণী। এপিএল অর্খার্ড এপিএল শেখার একটি দুর্দান্ত জায়গা এবং তারা সর্বদা সহায়তা করতে আগ্রহী

(×/÷,34|*∘≢⌸)⍭*14|⍭

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

Ungolfing

এই কোডের অংশ 2 নীচের ডায়ালগ ইউনিকোড সংস্করণের মতো এবং তাই এই ব্যাখ্যাটিতে আমি ফোকাস করব ⍭*1≠4|⍭

⍭*14|⍭

        Gives us a list of the prime factors of our input.
           Example for 45: 3 3 5
  14|   Checks if each prime is of the form 4k+1.
⍭*       Takes each prime to the power of 1 or 0,
           turning all the 4k+1 primes into 1s.
           Example for 45: 3 3 1

এপিএল (ডায়ালগ ইউনিকোড) , 41 40 36 35 বাইট এসবিসিএস

এই প্রোগ্রামটি প্রধান ফ্যাক্টর রুট ব্যবহার করে। এটি লেখার সময় কয়েকটি কৌশল শিখেছি এবং আমি অ্যাডম, ডিজাইমা, এইচ.পি.উইজ, জে.সালো এবং এনএনজি-র প্রতি গভীর amণী। এপিএল অর্খার্ড এপিএল শেখার একটি দুর্দান্ত জায়গা এবং তারা সর্বদা সহায়তা করতে ইচ্ছুক (বা এই পোস্টটি কখনই মাটিতে নামবে না :)

সম্পাদনা: এনজিএন থেকে -1 বাইট। অ্যাডাম থেকে -2 বাইট এবং এনজিএন থেকে আরও 2 বাইট। এনজিএন থেকে -1 বাইট।

{(×/÷,34|*∘≢⌸)p*14|p←¯2÷/∪∧\⍵∨⍳⍵}

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

Ungolfing

এটি দুটি অংশে একটি প্রোগ্রাম:

p*14|p←¯2÷/∪∧\⍵∨⍳⍵  Part 1

      p             We can define variables mid-dfn (a function in {} brackets).
               ⍵∨⍳⍵  We take the GCD of our input 
                       with every member of range(1, input).
            ∪∧\      This returns all the unique LCMs of every prefix
                       of our list of GCDs.
                       Example for 31500: 1 2 6 12 60 420 1260 6300 31500
        ¯2÷/         We divide pairwise (and in reverse)
                       by using a filter window of negative two 2).
                       Example for 31500: 2 3 2 5 7 3 5 5
  14|p              Check if the primes are 1 modulo 4 or not
p*                   And take each prime to the power of the result (1 or 0),
                       turning the 4k+3 primes into 1s
                       and leaving any 2s and 4k+3 primes.
                       Example for 31500: 2 3 2 1 7 3 1 1

(×/÷,34|*∘≢⌸)  Part 2

(            )  We apply all this to the filtered array of primes.
         *∘≢⌸   This takes all of our primes to their exponents
                  (the number of times those primes appear in the factorization).
                  Example for 31500: 4 9 1 7
     34|       Then we take each prime modulo 4 and check if not equal to 3.
                  We will only get a falsey if any 4k+3 primes, as an even number of
                  4k+3 primes multiplied together will result in some 4m+1.
                  Example for 31500: 1 1 1 0
   ÷,           We append the results of the above condition check
                  to the reciprocals of the primes in p.
                  Example for 31500: (1/2) (1/3) (1/2) 1 (1/7) (1/3) 1 1 1 1 1 0
 ×/             We multiply it all together, resulting in a positive fraction or 0
                  depending on our condition check.
                  Example for 31500: 0
                We return the results of all our checks implicitly.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.