বিশপগুলির বিরুদ্ধে পাসওয়ার্ডগুলি শক্তিশালী


13

পাসওয়ার্ড বিশপ গুডনেস নিয়ে বিভ্রান্ত হওয়ার দরকার নেই !

একটি স্ট্রিং দেওয়া হয়েছে, উত্তর দিন (সত্যবাদী / মিথ্যা বা দুটি ধারাবাহিক মান) যদি এটি কোনও পাসওয়ার্ড গঠন করে যা বিশপদের বিরুদ্ধে শক্তিশালী

একটি পাসওয়ার্ড বিশপদের বিরুদ্ধে শক্তিশালী যদি এটি স্ট্রিং হয় তবে এটির পরিবর্তে বর্ণগুলি (ইন a-h) এবং অঙ্কগুলি থাকে ( 1-8যেমন) প্রতিটি অক্ষরকে দাবাবোর্ডে একটি স্কোয়ার হিসাবে ব্যাখ্যা করা যায় এবং আপনি যদি প্রতিটি স্কোয়ারের উপরে একটি সাদা পদ্ম রাখেন তবে পাসওয়ার্ডে, তারপরে কোনও সাদা বিশপের পক্ষে প্রথম ( 1) সারির যে কোনও বর্গ থেকে শেষ ( 8) সারির কোনও বর্গ পর্যন্ত একটানা কয়েকটি পদক্ষেপে ভ্রমণ করার কোনও উপায় নেই ।

উদাহরণ

বিশপগুলির বিরুদ্ধে শক্তিশালী পাসওয়ার্ড

  • a1b1c1d1e1f1g1h1
  • a8b8c8d8e8f8g8h8
  • a1b2c3d4d5f5f4g3g4h2b5
  • h4g4f4e4c4b4a4c3e3
  • a1b1c1d1e1f1g1a8b8c8d8e8f8g8
  • b4b5d4d5f4f5g3h5

উদাহরণস্বরূপ, a1b1c1d1e1f1g1a8b8c8d8e8f8g8অবস্থান থেকে অনুরূপ foo বিন্যাসএবং b4b5d4d5f4f5g3h5অবস্থানে অনুরূপfoo বিন্যাস

বিশপগুলির বিরুদ্ধে পাসওয়ার্ড দুর্বল

  • a4c4e4g4g5d6f6e3d2b2 (সুগঠিত তবে শক্তিশালী নয় - ধন্যবাদ জো কিং এই উদাহরণের জন্য!)
  • b1c1d1e1f1g1h1a8b8c8d8e8f8g8 (সুগঠিত তবে শক্তিশালী নয়)
  • h4g4f4e4c4b4a4c3 (সুগঠিত তবে শক্তিশালী নয়)
  • d4 (সুগঠিত তবে শক্তিশালী নয়)
  • b4b5d4d5f4f5g2h5 (সুগঠিত তবে শক্তিশালী নয়)
  • correct horse battery staple (অসুস্থ গঠিত)
  • 1a1b1c1d1e1f1g8a8b8c8d8e8f8g (অসুস্থ গঠিত)
  • a (অসুস্থ গঠিত)
  • aa (অসুস্থ গঠিত)

1
বিশপ কোন রঙের স্কোয়ারগুলিতে যায়?
অজ্ঞতার

2
আপনার ২ য় শেষ পরীক্ষার কেসটি আপনার অনুমানের সাথে স্ববিরোধী। আপনাকে কীভাবে " প্রতিটি জোড়ের অক্ষরকে দাবাবোর্ডের স্কোয়ার হিসাবে ব্যাখ্যা করা যায় " তাও ব্যাখ্যা করতে হবে
শেগি

1
a1b2c3d4d5f5f4g3g4h2b5 বিশপদের বিরুদ্ধে শক্তিশালী নয়, যেহেতু কোনও বিশপ এইচ 5 এ যেতে পারে, তারপরে ডি 1 তে যান
অজ্ঞতার

2
@ ট্র্যাটিসাইম্যাগভিএস, আউরাস: আমি স্পষ্ট করে দিয়েছি যে প্রসংশা এবং বিশপ উভয়ই শ্বেত, সুতরাং অন্যটিকেও ধরার অনুমতি দেওয়া হয়নি (বা অবতরণ করতে হবে, বা উপরের দিকে ঝাঁপিয়ে পড়তে হবে) বা অন্যটিকেও লাফিয়ে তোলার অনুমতি নেই।
কুক্সপ্লসোন

1
এছাড়াও, আপনি সত্যবাদী পরীক্ষার ক্ষেত্রে একটির জন্য উদাহরণ যোগ করতে পারেন। কারণ আমি বুঝতে পারি যে পাসওয়ার্ডের স্কোয়ারগুলি সাদা পদ্মায় ভরাট, তবে সাদা বিশপ কোথায় রাখা হয়েছে তা আমি বুঝতে পারি না। এবং যদি কোন জায়গা জরিমানা কেন প্রতিটি সারির ভ্রমণ করতে পারবে না 1মাধ্যমে 8প্রথম টেস্টের ক্ষেত্রে? এটি প্রতিটি কলামে ভ্রমণ করতে পারে না, যেহেতু aকলামটি সম্পূর্ণ মহাজনে পূর্ণ, তবে এটি কোনও সমস্যা ছাড়াই প্রতিটি সারিতে ভ্রমণ করতে পারে, তাই না? আমার মনে হচ্ছে আমি কিছু মিস করছি ..: এস
কেভিন ক্রুইজসেন

উত্তর:


4

রুবি, 115 182 163 বাইট

->s{z=('00'..'99').map{|x|x=~/[09]/||s[(x[1].ord+48).chr+x[0]]};(11..18).map &g=->x{z[x]||[x-11,x-9,x+z[x]=9,x+11].map(&g)};s=~/^([a-h][1-8])*$/&&(z[81,9]-[9])[8]}

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

রিটার্নস 1শক্তিশালী এবং nilদুর্বল জন্য। (+67 বাইটস "ব্যাকট্র্যাকিং" অ্যাকাউন্টে নেওয়ার জন্য ছিল)

->s{
 z=                             # this is the board
 ('00'..'99').map{|x|           # coordinates are described as y*10 + x
  x=~/[09]/||                   # truthy if out of bounds...
  s[(x[1].ord+48).chr+x[0]]     # ...or impassable
 }                              # now only the passable squares are falsey
 (11..18).map                   # for each x position at y=1,
  &g=->x{                       # call helper function on that square
   z[x]||                       # if the square is passable (i.e. falsey),
    [x-11,x-9,x+z[x]=9,x+11]    # mark it impassable by setting to 9 (truthy)
     .map(&g)                   # call helper recursively for each neighbor
  }
 s=~/^([a-h][1-8])*$/           # make sure the input was valid,
 &&(z[81,9]-[9])[8]             # and check that the last row was never reached
}

কয়েকটি কৌশল যা ব্যবহৃত হয়েছিল:

  • সংখ্যার ব্যাপ্তির পরিবর্তে 0..99, আমরা স্ট্রিং রেঞ্জটি ব্যবহার করি '00'..'99'যাতে নম্বরটি স্বয়ংক্রিয়ভাবে 2 অঙ্কে বাম-প্যাড হয়ে যায় এবং স্ট্রিংফাইড হয়। এটি রেজিেক্সের সাথে খুব সংক্ষিপ্ত - ম্যাচের চেকিংয়ের বাইরে চলে যায় /[09]/

  • সাহায্যকারী ফাংশন ভিতরে, নতুন স্থানাঙ্ক তালিকা বিল্ডিং যখন [x-11, x-9, x+9, x+11], আমরা একযোগে দায়িত্ব অর্পণ z[x]করার 9প্রক্রিয়া, যা একটি truthy মান হতে হবে মধ্যে (বর্গ পরিদর্শন উপলক্ষে)।

  • শেষ লাইনে, আমরা পরীক্ষা করতে চাই যে অ্যারেটি z[81,9]নেই 9। আমরা 9( z[81,9]-[9]) এর সমস্ত দৃষ্টান্ত অপসারণ করে এটি করি , তারপরে ফলাফল অ্যারের (9) উপাদানটি জিজ্ঞাসা করব [8]। যেহেতু আমরা জানি যে অ্যারেতে মূলত 9 টি উপাদান ছিল, যদি কোনও অপসারণ করা হয়, আমরা পেয়ে যাব nil, আর যদি সেগুলি সবই থেকে যায়, আমরা অ্যারের শেষ উপাদানটি পেয়ে যাব (যা সর্বদা হয়ে থাকে 1)।


2

পাইথন 2 , 330 318 313 309 370 বাইট

import numpy as n
b=n.ones([8,8])
q=r=1
s=input()
l=len(s)
def g(x,y=0,p=0):
    if b[y,x]and p<32:
        if y<7:
            if x<7:
                g(x+1,y+1,p+1)
                if y:g(x+1,y-1,p+1)
            if x:
                g(x-1,y+1,p+1)
                if y:g(x-1,y-1,p+1)
        else:global q;q=0
for i in range(l/2):
    x=ord(s[2*i])-97;y=ord(s[2*i+1])-49
    if y>8or y<0 or l%2or x>8or x<0:r=0
    if r:b[7-y,x]=0
map(g,range(8))
print q&r

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

অনলাইনে ব্যবহারিক সংস্করণ ব্যবহার করে দেখুন! (সম্পূর্ণরূপে চেক করতে মূল 4 ^ 32 অপারেশন নিতে পারে, আমি এটি ব্যবহার করার পরামর্শ দিচ্ছি - একই সংখ্যক বাইট)

একটি সুপার শর্ট সলিউশন নয় - আমি কীভাবে জি এর চেয়ে কম লম্বা ফাংশন সংস্করণ তৈরি করতে পারি তা বুঝতে পারি না।

-4 বাইটস কুইক্সপ্লসোনকে ধন্যবাদ

ব্যাকট্র্যাকিংয়ের জন্য +61 বাইটস অ্যাকাউন্টিং (জো কিংকে নির্দেশ করার জন্য এবং গল্ফিং টিপসের জন্য ধন্যবাদ)


খুশী হলাম। q=r=1চেয়ে খাটো হবে q=1 r=1, তাই না? এবং এর if r:চেয়ে কম if r>0:
কুক্সপ্লসোন

2

পাইথন 2 , 490 476 474

def f(p):
 a=[set(ord(c)-33 for c in s)for s in"* )+ *, +- ,. -/ .0 / \"2 !#13 \"$24 #%35 $&46 %'57 &(68 '7 *: )+9; *,:< +-;= ,.<> -/=? .0>@ /? 2B 13AC 24BD 35CE 46DF 57EG 68FH 7G :J 9;IK :<JL ;=KM <>LN =?MO >@NP ?O BR ACQS BDRT CESU DFTV EGUW FHVX GW JZ IKY[ JLZ\\ KM[] LN\\^ MO]_ NP^` O_ R QS RT SU TV UW VX W".split()];x=set((ord(p[i+1])-49)*8+ord(p[i])-97 for i in range(0,len(p),2))
 r=set(range(8))-x
 for i in range(99):r=set().union(*[a[c]for c in r])-x
 return all(c<56 for c in r)

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

এটি "বন্যা-পূরণ" দ্বারা কাজ করে। প্রথমে আমরা একটি তালিকা তৈরি করি aযা স্কোয়ার সংলগ্ন কোন অন্যান্য স্কোয়ার, বিশপওয়ালা। তারপরে আমরা xব্যতিক্রমগুলির একটি সেট তৈরি করি (পাসওয়ার্ডের ভিত্তিতে)। তারপরে আমরা rপৌঁছনীয় স্কোয়ারগুলির একটি সেট শুরু করি, যা কেবল প্রথম সারি হিসাবে শুরু হয় (কোনও ব্যতিক্রম বিয়োগ) এবং বারবার সেখান থেকে বাইরের দিকে "বন্যা" হয়, যা যথেষ্ট পরিমাণের চেয়ে বেশি হওয়া উচিত। শেষ অবধি, আমরা শেষ সারির কোনও স্কোয়ারটি আমাদের পৌঁছনীয় সেটে শেষ হয়েছে কিনা তা পরীক্ষা করে দেখছি। যদি তা হয় তবে আমাদের একটি দুর্বল পাসওয়ার্ড রয়েছে! যদি তা না হয় তবে আমাদের কাছে শক্তিশালী পাসওয়ার্ড রয়েছে।

অসুবিধা, সম্ভবত অযোগ্য ঘোষণা (আমি এখানে সাধারণ নিয়মটি জানি না): যদি পাসওয়ার্ডটি খারাপভাবে তৈরি হয় (যেমন "সঠিক ঘোড়ার ব্যাটারি স্ট্যাপল"), তবে আমরা ফিরে আসার পরিবর্তে একটি ব্যতিক্রম ছুঁড়ে ফেলি False। তবে Trueপাসওয়ার্ডটি শক্তিশালী হলে আমরা সর্বদা ফিরে আসি!

মাইনাস 16 বাইট জো কিংকে ধন্যবাদ জানায়। aএটি ব্যবহৃত এক জায়গায় আমরা ইনলাইন করি এবং কিছু গণিতকে অবিচ্ছিন্নভাবে ভাঁজ করি।

def f(p):
 x=set(ord(p[i])-489+8*ord(p[i+1])for i in range(0,len(p),2));r=set(range(8))-x
 for i in[1]*99:r=set().union(*[[set(ord(k)-33for k in s)for s in"* )+ *, +- ,. -/ .0 / \"2 !#13 \"$24 #%35 $&46 %'57 &(68 '7 *: )+9; *,:< +-;= ,.<> -/=? .0>@ /? 2B 13AC 24BD 35CE 46DF 57EG 68FH 7G :J 9;IK :<JL ;=KM <>LN =?MO >@NP ?O BR ACQS BDRT CESU DFTV EGUW FHVX GW JZ IKY[ JLZ\\ KM[] LN\\^ MO]_ NP^` O_ R QS RT SU TV UW VX W".split()][c]for c in r])-x
 return all(c<56for c in r)

@ জোকিং ধন্যবাদ! দু'জনের আগে এখনও শ্বেতস্থান রয়েছে forযা আমি কীভাবে সরিয়ে ফেলতে পারি তা দেখতে পেলাম না। আমি দেখতে পেলাম যে আমার লোকাল মেশিনে কাজ করে প্রতিস্থাপন range(99)করা repr(f)কিন্তু টিওআরুন এর দোভাষীর বদলে নয় ... তবে আমি দেখতে পেলাম [1]*99যেভাবেই এটি সংক্ষিপ্ত ছিল! যাতে আরও 4 বাইট সংরক্ষণ করা হয়েছে।
কুক্সপ্লসোন

দুইটি সাদা জায়গার আগে forআমি কীভাবে অপসারণ করতে পারি তা দেখতে পেলাম না - ওহ! স্পষ্টতই পাইথন 33forদুটি টোকেন হিসাবে বিবেচনা করে (যেখানে for33একটি টোকেন হবে)। আজ আমি শিখলাম. বিয়োগ 2 আরও বাইট, তারপর।
কুক্সপ্লসোন

1

পরিষ্কার , 285 বাইট

import StdEnv,Data.List
$_[_]=1<0
$a[x,y:l]=case[[u,v]\\u<-[0..7],v<-[0..7]|u==toInt x-97&&v==toInt y-49]of[p]= $[p:a]l;_=1<0
$a _=all(\[_,y]=y<7)(iter 64(nub o\e=e++[k\\[u,v]<-e,p<-[-1,1],q<-[-1,1],k<-[[abs(u+p),abs(v+q)]]|all((<>)k)a&&all((>)8)k])(difference[[e,0]\\e<-[0..7]]a))

$[]

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

$[]হয় $ :: [[Int]] [Char] -> Boolপ্রথম আর্গুমেন্ট সঙ্গে গঠিত, দান \ [Char] -> Bool

ফাংশনটি একবারে দুটি অক্ষর গ্রাস করে কাজ করে, অবিলম্বে মিথ্যা ফিরিয়ে দেয় যদি স্ট্রিংটি অবৈধ অংশে দেখার সাথে সাথেই একটি অবৈধ বিন্যাসে থাকে। স্ট্রিংটি প্রক্রিয়া করা হয়ে গেলে, এটি বোর্ডের একপাশে প্রতিটি খালি স্কোয়ারে একটি বিশপ রাখে এবং প্রতিটি বারে সম্ভব moves৪ বার স্থানান্তরিত করে এবং শেষের অবস্থানগুলির মধ্যে কেউ লক্ষ্য সারিতে রয়েছে কিনা তা পরীক্ষা করে।


মনে হয় ভুল ফিরতে Trueজন্য a1b1c1d1e1f1g1? এটি কীভাবে কাজ করে সে সম্পর্কে আমি কিছুই বুঝতে পারি না। :)
কুক্সপ্লসোন

2
@ কুইকপ্লসোন আমার একটি মস্তিষ্ক-উচ্ছ্বাস ছিল এবং ভেবেছিল সাদা বিশপ কেবলমাত্র সাদা স্কোয়ার ব্যবহার করে। আমি একটি ব্যাখ্যাও যোগ করেছি।
ousurous

1

ওল্ফ্রাম ভাষা (গণিত) , 339 316 358 353 345 বাইট

-23 বাইট @ ডুরকনবকে ধন্যবাদ জানায়।

ব্যাকট্র্যাকিংয়ের জন্য অ্যাকাউন্টিং +42 বাইট।

p[m_]:=StringPartition[#,m]&;l=Range@8;f[n_]:=Check[w=(8#2+#1-8)&@@@({LetterNumber@#,FromDigits@#2}&@@@(p@1/@p[UpTo@2]@n));g=Graph[Sort/@UndirectedEdge@@@Position[Outer[EuclideanDistance@##&,#,#,1],N@Sqrt@2]&@GraphEmbedding@GridGraph@{8,8}//Union]~VertexDelete~w;c:=#~Complement~w&;m=0;Do[m+=Length@FindPath[g,i,j],{i,c@l},{j,c[l+56]}];m==0,0>1]

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

আমি এগুলির বেশিরভাগটিকে ব্যাকট্র্যাকিংয়ের জন্য অ্যাকাউন্টে পুনরায় লিখেছিলাম, আমি মনে করি গ্রাফটি সংজ্ঞায়নের জন্য আরও সহজ উপায় হতে পারে g, ম্যাথমেটিকায় রয়েছে GraphData[{"bishop",{8,8}}]একটি বিশপ একটি দাবাবোর্ডে ( বিশপ গ্রাফ ) যে সমস্ত চালচলন করতে পারে তার গ্রাফ , তবে এই গ্রাফটিতে আরও সংযোগ রয়েছে নিকটতম তির্যক প্রতিবেশী চেয়ে। যদি কেউ এটির জন্য একটি ছোট উপায় জানেন তবে আমাকে জানান। গ্রাফ নির্মাণ জন্য ক্রেডিট যায় এই MathematicaSE উত্তর

Trueশক্তিশালী পাসওয়ার্ডগুলির Falseজন্য, দুর্বল / দুর্বল-গঠিত পাসওয়ার্ডগুলির জন্য ফেরত দেয় । মনে রাখবেন যে বেশিরভাগ দূষিত পাসওয়ার্ডগুলির জন্য এটি একগুচ্ছ ত্রুটি বার্তা উত্পন্ন করবে এবং তারপরে ফিরে আসবে False। এটি যদি নিয়মগুলির সাথে সঙ্গতিপূর্ণ না হয় তবে তারা 6 বাইটের দামে পরিবর্তন f[n_]:=...করে দমন করা যায় f[n_]:=Quiet@...

Ungolfed:

p[m_] := StringPartition[#, m] &;

f[n_] :=
 Check[
  w = (8 #2 + #1 - 
       8) & @@@ ({LetterNumber@#, FromDigits@#2} & @@@ (p@1 /@ 
        p[UpTo@2]@n));
  r = GridGraph[{8, 8}];
  g = Graph[Sort /@ UndirectedEdge @@@
             Position[Outer[EuclideanDistance@## &, #, #, 1],N@Sqrt@2] &@
              GraphEmbedding@r // Union]~VertexDelete~w;
  s = Complement[{1,2,3,4,5,6,7,8},w];
  e = Complement[{57,58,59,60,61,62,63,64},w];
  m = 0;
  Do[m += Length@FindPath[g, i, j], {i, s}, {j, e}];
  If[m == 0,True,False]
  , False]

ভাঙ্গন:

p[m_]:=StringPartition[#,m]& 

একটি স্ট্রিং আর্গুমেন্ট নেয় এবং এটিকে প্রতিটি দৈর্ঘ্যের স্ট্রিংয়ের তালিকায় বিভক্ত করে m

Check[...,False]

রিটার্নস Falseকোন ত্রুটি বার্তা উত্পাদিত হয় যদি, যা আমরা কীভাবে অসুস্থ গঠিত স্ট্রিং (অর্থাত অনুমান তারা সুগঠিত হয়, অবশ্যম্ভাবীরূপে লাইন নিচে একটি ত্রুটি উত্পাদক) ধরা।

(8*#2 + #1 - 8) & @@@ ({LetterNumber@#, FromDigits@#2} & @@@ (p@1 /@ 
        p[UpTo@2]@n));

প্যাকেজ পজিশনের স্ট্রিং নেয় এবং এটিকে ভাগ করে দেয় যা "a2h5b"হয়ে যায় {{"a","2"},{"h","5"},{"b"}}, তারপরে LetterNumberঅক্ষরটিকে একটি সংখ্যায় ( a -> 1ইত্যাদি) FromDigitsরূপান্তরিত করে এবং সংখ্যাটিকে পূর্ণসংখ্যায় রূপান্তরিত করে। যদি স্ট্রিংটি ভালভাবে তৈরি না হয় তবে এই পদক্ষেপটি একটি ত্রুটি তৈরি করবে যা Checkফিরে এসে ফিরে আসবে False। এই দুটি সংখ্যা বোর্ডের বর্গের সাথে সম্পর্কিত একটি পূর্ণসংখ্যায় রূপান্তরিত হয়।

r = GridGraph[{8, 8}];
g = Graph[
     Sort /@ UndirectedEdge @@@ 
          Position[Outer[EuclideanDistance@## &, #, #, 1], 
           N@Sqrt@2] &@GraphEmbedding@r // Union]~VertexDelete~w;

পঙ্কিত অবস্থানগুলি মোছার সাথে সমস্ত নিকটবর্তী-প্রতিবেশী তির্যক প্রান্তগুলির গ্রাফ তৈরি করে।

s = Complement[{1,2,3,4,5,6,7,8},w];
e = Complement[{57,58,59,60,61,62,63,64},w];

এগুলি যথাক্রমে অবৈধভাবে শুরু এবং শেষ শৃঙ্গগুলির তালিকা

m=0
Do[m += Length@FindPath[g, i, j], {i, s}, {j, e}];
If[m == 0,True,False]

প্রারম্ভিক এবং শেষের শীর্ষগুলি উপরে লুপগুলি, প্রতিটি জুটির জন্য FindPathতাদের মধ্যে পাথের তালিকা হবে। যদি তাদের মধ্যে কোনও পথ না থাকে তবে এটি একটি খালি তালিকা হবে, সুতরাং Length@ফিরে আসবে 0। যদি কোনও পথ না থাকে তবে mশূন্য হবে এবং আমরা ফিরে যাব True, অন্যথায় ফিরে আসব False


কয়েকটি টিপস: এবং যথাক্রমে Trueএবং Falseহতে পারে । ন্যায়বিচারের সমতুল্য । সঙ্গে প্রতিস্থাপন করা যেতে পারে । পরিবর্তে , আপনি ব্যবহার করতে পারেন । 1>00>1p[1]@#&/@p@1/@Sequence@@##&@@{LetterNumber[#[[1]]],FromDigits[#[[2]]]}&/@{LetterNumber@#,FromDigits@#2}&@@@
ডুরকনব

@ ডুরকনব ধন্যবাদ! কোড গল্ফিং আমাকে গাণিতিক সম্পর্কিত সমস্ত ধরণের নতুন বিষয় শিখিয়ে দিচ্ছে। আমি এখনও 100% বুঝতে পারি না p@1/@, তবে আমি সাধারণ ধারণাটি দেখতে পাই। আমি মনে করি p@1 = StringPartition[#,1]&, এটি আমার কাছে সামান্য বিভ্রান্তিকর বলে আমি অনুমান করি কারণ pদুটি যুক্তি দুটি ভিন্ন উপায়ে গ্রহণ করে, একটি হিসাবে m_এবং অন্যটি হিসাবে #...&, আমি অনুমান করি এটি কেবলমাত্র প্রাধান্যের বিষয়। যদিও এটি বোধগম্য হয় p@m = p[m]
কাই

এটা আমার জন্যও আছে! সেখানে মূল পরিবর্তনটি হ'ল যে কোনও ক্রিয়াকলাপের জন্য fযা একটি একক যুক্তি গ্রহণ করে, ঠিক f@#&তার মতোই আচরণ করে f- এখানে, fএটি p[1]। (তারপরে আমি []স্বীকৃতিটি পরিবর্তিত করেছি @, যা অগ্রাধিকার ব্যতীত সর্বদা অভিন্ন))
ডুরকনব

@ জোকিং যে কৌতুকপূর্ণ, এটি আমার প্রথম ভাবার চেয়ে জটিলতর, পিছনের গতিবিধির বিষয়টিও বিবেচনা করা। ধন্যবাদ
কাই

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