Background
J'ai fait une image par points de l'image d'Irasutoya. (part1) lors de la division d'une couleur en quatre
J'ai défini manuellement le seuil comme range_color = [0, 85, 170, 255]
(ou [i * int (255/3) pour i dans la plage (3)]
). (En fait, il a été divisé en 3 parties et approximé à 4 valeurs.)
Cette fois, c'était juste divisible, donc il n'y avait pas de problème, mais j'ai pensé à comment concevoir l'algorithme si la plage et le nombre de divisions étaient des valeurs arbitraires et différentes, alors je l'ai résumé.
Dans l'exemple ci-dessus, la plage est de 255 et le nombre de divisions est de 3.
Method
Il n'est pas divisible proprement et un reste est généré. Dans ce cas, ajoutez +1 uniformément au premier élément.
Alors, comment faire
C'est le flux de.
Development
import sys
def main():
if len(sys.argv) != 3:
print("[USAGE] you give parameters this command.")
print("[EXAMPLE] python main.py [range number] [n-division number]")
print("[EXAMPLE] python main.py 255 4")
sys.exit()
r = int(sys.argv[1]) #intervalle
d = int(sys.argv[2]) #n Nombre de divisions
q, mod = divmod(r, d) #Marchandise, calcul du reste
#Liste d'ajout
plus = [q + 1 if i < mod else q for i, d in enumerate(range(d - 1))]
print(plus)
#production
dst = []
dst.append(plus[0])
for i in range(len(plus)):
dst.append(plus[0] + sum(plus[:1 + i]))
print(dst)
if __name__ == '__main__':
main()
Comment
\W $ python main2.py 255 6
[43, 43, 43, 42, 42]
[43, 86, 129, 172, 214, 256]
\W $ python main2.py 255 10
[26, 26, 26, 26, 26, 25, 25, 25, 25]
[26, 52, 78, 104, 130, 156, 181, 206, 231, 256]
La "liste d'addition" est une liste des valeurs des intervalles de chaque élément.
Sur la base de cette liste, calculez chaque élément avec sum (plus [: 1 + i])
.
Exemple) Lorsque vous souhaitez calculer la plage 255, le nombre de divisions 10 et le 7e élément Valeur initiale 26 + [26, 26, 26, 26, 26, 25] valeur totale = 181
C'est la séquence de nombres de différence que j'ai apprise au lycée. : smirk_cat: Terra Natsu
a_n = a_1 + \sum_{k=1}^{n-1}b_k \quad (n \geqq 2 )
PostScript Lorsque vous créez du contenu, vous pouvez penser un peu à l'algorithme, même à petite échelle. En tant que développeur, l'écriture ne manque pas car les éléments de qiita vont augmenter. : robot:
Reference
[(x + i) // n for i in range (n)]
. Celui-ci est plus simple.