[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Aw: Re: [sc-users] recursion



> Gesendet: Sonntag, 29. Dezember 2019 um 06:00 Uhr
> Von: rohrhuber@xxxxxxxxxxxxxx
> An: sc-users@xxxxxxxxxxxxxxxx
> Betreff: Re: [sc-users] recursion
>
> and it it’s OK to have the array backwards, you can do it with a pure function:
> 
> (
> ~collatz_R = { arg num, col, limit = 1000;
> 	if((num != 1) and: { limit > 0 }) {
> 		~collatz_R.(
> 			if(num.even) { num.div(2) } { num * 3 + 1 },
> 			col,
> 			limit - 1
> 		)
> 	}.add(num)
> };
> )
> 

Haha, I love you people, welcome to the SC pluriverse !

BTW sometimes it might be useful to write code without round brackets as it can significantly reduce the probability of bracket confusion [or it can help with an incomplete keyboard]

This version also works without semicolons:

~collatz_R = { |num, col, limit = 1000|
	num != 1 and: { limit > 0 } if: {
		~collatz_R valueArray: [
			num.even.if { num div: 2 } { num * 3 + 1 },
			col,
			limit - 1
		]
	} add: num
}

~collatz_R value: 23

-> [ 1, 2, 4, 8, 16, 5, 10, 20, 40, 80, 160, 53, 106, 35, 70, 23 ]

Regards

Daniel

-----------------------------
http://daniel-mayer.at
-----------------------------

_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
archive: https://listarc.bham.ac.uk/marchives/sc-users/
search: https://listarc.bham.ac.uk/lists/sc-users/search/