<prompt> Kwa kuzingatia mkusanyiko nums wa nambari kamili tofauti, rudisha _vibali vyote vinavyowezekana_. Unaweza kurudisha jibu kwa mpangilio wowote .Mfano wa 1:Ingizo: nambari 1,2,3Pato: 1,2,3,1,3,2,2,1,3,2,3,1, 3,1,2,3,2,1Mfano wa 2:Ingizo: nambari 0,1Pato: 0,1,1,0Mfano wa 3:Ingizo: nambari 1Pato: 1Vikwazo: 1 nums.length 6 -10 numsi 10 Nambari kamili za nums ni kipekee.  <response>: chatukutoka kwa kuchapa Orodha ya kuingizadef permutenambari: Orodhaint - OrodhaOrodhaint: def msaidizi index: ikiwa index lennambari - 1: matokeo.ongezaidadi: kurudi kwa i katika masafa index, lennambari: numsindex, numsi numsi, numsindex msaidiziindex 1 numsindex, numsi numsi, numsindex matokeo msaidizi0 kurudisha matokeomaelezoAlgorithm hutumia kurudi nyuma kutoa vibali vyote vinavyowezekana. Inafanya kazi kwa kubadilishana vipengele katika safu ya ingizo kwa njia ya kujirudia.1. Kesi ya msingi ni wakati index inafikia kipengele cha mwisho cha safu; kwa hatua hii, tunaongeza usanidi wa sasa kwenye orodha ya matokeo.2. Kwa kila faharasa, tunarudia kutoka index hadi mwisho wa safu, kwa kufanya hatua zifuatazo: a. Badilisha vipengele vya index na i. b. Piga simu kitendakazi cha usaidizi kwa kujirudia kwa index 1. c. Badilisha vipengele kurudi kwenye nafasi zao asili.Hii itazalisha vibali vyote vinavyowezekana, kwani inabadilisha vipengele katika nafasi tofauti huku ikidumisha mpangilio asilia katika safu ya ingizo. Hali ya kukomesha urejeshaji ni kesi ya msingi tunapofikia mwisho wa safu. Ugumu wa algorithm hii ni ON!, kwani kuna N! vibali vya safu ya vipengele N. 