Astlibra: Revision - Come bilanciare le scale della Bilancia con il codice Python (2024)

Astlibra: Revision - Come bilanciare le scale della Bilancia con il codice Python (1)

Stanco di scambiare da che parte dovrebbe andare avanti un oggetto?Desideri che un computer potesse forzare una scala bilanciata al 100%?Ho la soluzione per te.

Contenuti

  • Guida per bilanciare le scale della Bilancia con il codice Python
    • Preambolo
    • Bilanciamento con oggetti noti
    • Bilanciamento con un articolo di riempimento

Guida per bilanciare le scale della Bilancia con il codice Python

Tutto il credito va aNovità!

Preambolo

Ciò richiede un po 'di conoscenza di Python da usare, ma solo fino alla scrittura di numeri in un elenco, commentando il codice ed esegue un file.Inoltre, fai installare Python o qualsiasi altra cosa per eseguire il codice.Ho Python 3.11, ma probabilmente funziona anche con alcune versioni precedenti.

Per utilizzare il codice per te stesso, dovrai solo modificare i valori in una riga e quindi eseguire il codice.

Anche come un po 'di disclaimer: ha funzionato per il mio uso personale e la mia soddisfazione;Se il codice è infastidito e sembra perdere alcuni casi o non funziona per alcune dimensioni dell'input, questa è una oopsie da parte mia, ma è improbabile che risolvi il codice.

Ho cercato di ripulire un po 'il codice, ma sono cattivo nel nominare le cose.Normalmente uso Java, quindi se le convenzioni di denominazione sono spente, allora è per questo.

E sì, il codice può essere più efficiente (come non scegliere lo stesso valore di diverse scelte quando l'elenco ha pesi dupe), ma non posso essere disturbato a rendere il codice più lungo e complesso per questa guida.

Bilanciamento con oggetti noti

Quindi ad un certo punto in passato, avevo un sacco di oggetti che volevo sulla scala della Bilancia, ma non potevo fare i matematici per bilanciarli al 100%.Così ho scritto un bruto per farlo per me.

Codice

Def bilanciallibra (elementi, target = nessuno): iterazione globale iterazione = 0 se target è nessuno: target = somma (elementi) // 2 restituire FindBalacedLibra (articoli, target, len (elementi) // 2, 0) def fintbatalcedlibra (elementi, target, a sinistra, min_i): se lasciato == 0: iterazione iterazione globale+= 1 se target == 0: # print ("win") print (elementi) restituisci vero altro: # print ("perde") restituisce false peri in gamma (min_i, len (elementi)): picked = elementi [i] installato = [elemento per j, elemento in enumerate (articoli) se j! = i] newtarget = target - raccolto se (findbalacedlibra (non premuto, newtarget,Left-1, i): return False # Dai tutte le combinazioni # return # Dai la prima combinazione solo # Voglio trovare un equilibrio di questi articoli.Items = [90, 86, 70, 63, 49, 48, 45,41, 38, 10] BAILEDLIBRA (articoli) Stampa (iterazione, "Casi controllati")

Il modo per usarlo è scrivere i pesi degli elementi all'interno dell'elenco degli elementi.Dopo averlo eseguito, nella console dovrebbe stampare i pesi di un lato delle scale.Quindi metti gli oggetti rimanenti dall'altro.

Se ci sono più combinazioni valide, le stamperanno tutte.

Esempio di output

Il codice sopra resa

[86, 70, 63, 41, 10] [90, 49, 48, 45, 38] 251 Casi controllati

Ne sceglierò uno, "[90, 49, 48, 45, 38]", quindi l'altro lato delle scale dovrebbe essere [86, 70, 63, 41, 10].

Si sommano molto bene fino a 270 su ciascun lato.

Bilanciamento con un articolo di riempimento

Quindi questo è un codice più recente che ho scritto (in particolare, viene da suonare il Gaiden DLC).

Spiegazione della strategia

Esistono probabilmente molteplici strategie per bilanciare la Bilancia, ma il mio GOTO è quello di compilare tutte le padelle con gli articoli che desidero tranne uno, quindi inserire un elemento di riempimento con lo scopo esplicito di ottenere un equilibrio al 100% e ignorarne completamente l'effetto (comefinché non contrasta alcun beneficio).

Dubro questa strategia come peso sospeso, dal momento che questo peso di riempimento sta semplicemente penzolando lì non facendo nulla.Tuttavia, come estensione di questa strategia, potrebbe essere possibile scegliere un peso sospeso con effetti più favorevoli spostando gli altri oggetti (cambiando così il peso appeso al bersaglio).

Ma non ho la pazienza di fare un elenco esaustivo di tutti i possibili valori di pesi sospesi.Così ho scritto un bruto per farlo per me.

Codice

ScaleBalance di classe: def __init __ (self, vuoto, fullside): self.emptyside = svuoto di selfside.fullside = fullside @property def bersaglio (self): return Sum (self.fullside) - somma (self.emptyside) def __eq __ (self,Altro): return self.fullside == Altro.fullside e self.emptyside == Altro.emptyside def __hash __ (self): return 0 #performance non importa qui.def __lt __ (self, altro): return self.target 

Il modo per usarlo è scrivere i pesi degli oggetti all'interno delelementielenco.Ricorda di avere spazio per una padella aggiuntiva per il peso appeso.Dopo averlo eseguito, nella console dovrebbe stampare i pesi di entrambi i lati delle scale (delimitati da un "|"), con i valori di peso sospeso a sinistra del segno "+".Stampa anche tutti i possibili pesi sospesi come un set, quindi non è necessario scorrere per tutti i valori.

Se ci sono più combinazioni con lo stesso peso sospeso, verranno stampati uno accanto all'altro.Questo può aiutare quando il peso sospeso condivide un effetto con uno degli altri oggetti, quindi potresti essere in grado di avere il peso sospeso sullo stesso lato per evitare che gli effetti si cancellassero.

Esempio di output

Esecuzione dei rendimenti del codice sopra

13 + [76, 74, 70] |[63, 63, 59, 48] 27 + [76, 74, 63] |[70, 63, 59, 48] 35 + [76, 70, 63] |[74, 63, 59, 48] 35 + [76, 74, 59] |[70, 63, 63, 48] 39 + [74, 70, 63] |[76, 63, 59, 48] 43 + [76, 70, 59] |[74, 63, 63, 48] 47 + [74, 70, 59] |[76, 63, 63, 48] 49 + [76, 63, 63] |[74, 70, 59, 48] 53 + [74, 63, 63] |[76, 70, 59, 48] 57 + [76, 74, 48] |[70, 63, 63, 59] 57 + [76, 63, 59] |[74, 70, 63, 48] 61 + [74, 63, 59] |[76, 70, 63, 48] 61 + [70, 63, 63] |[76, 74, 59, 48] 65 + [76, 70, 48] |[74, 63, 63, 59] 69 + [74, 70, 48] |[76, 63, 63, 59] 69 + [70, 63, 59] |[76, 74, 63, 48] 79 + [76, 63, 48] |[74, 70, 63, 59] 83 + [74, 63, 48] |[76, 70, 63, 59] 83 + [63, 63, 59] |[76, 74, 70, 48] 87 + [76, 59, 48] |[74, 70, 63, 63] 91 + [74, 59, 48] |[76, 70, 63, 63] 91 + [70, 63, 48] |[76, 74, 63, 59] 99 + [70, 59, 48] |[76, 74, 63, 63] 105 + [63, 63, 48] |[76, 74, 70, 59] 113 + [63, 59, 48] |[76, 74, 70, 63] {13, 27, 35, 39, 43, 47, 49, 53, 57, 61, 65, 69, 79, 83, 87, 91, 99, 105, 113} 35 casicontrollato

C'è questo set di pesi sospesi alla fine {13, 27, 35, 39, 43, 47, 49, 53, 57, 61, 65, 69, 79, 83, 87, 91, 99, 105, 113}.

Quindi vado oltre il mio inventario per verificare un oggetto con uno di quei pesi e ne trovo uno che dà effetti decenti che non sono in conflitto con gli effetti esistenti.Diciamo che ne ho trovato uno che pesa 65.

Quindi guardo sopra nell'elenco e trovo una combinazione “65 + [76, 70, 48] |[74, 63, 63, 59] ", ed è così che organizzerò la Bilancia.Entrambi i lati pescano ciascuno 259.

Altre guide:

  • Astlibra: Revisione - Capitolo 4 Soluzione puzzle
  • Astlibra: Revisione - Suggerimenti e trucchi utili
  • Astlibra: Revision - How to Beat Final Boss (capitolo 8)
  • Astlibra: Revision - Egghead Achievement Guide (tutti gli elementi Riferimento screenshot)
Astlibra: Revision - Come bilanciare le scale della Bilancia con il codice Python (2024)
Top Articles
Latest Posts
Article information

Author: Duane Harber

Last Updated:

Views: 5871

Rating: 4 / 5 (51 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Duane Harber

Birthday: 1999-10-17

Address: Apt. 404 9899 Magnolia Roads, Port Royceville, ID 78186

Phone: +186911129794335

Job: Human Hospitality Planner

Hobby: Listening to music, Orienteering, Knapping, Dance, Mountain biking, Fishing, Pottery

Introduction: My name is Duane Harber, I am a modern, clever, handsome, fair, agreeable, inexpensive, beautiful person who loves writing and wants to share my knowledge and understanding with you.