Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Relevant links:
- JSFiddle playing with "secret santa":
- https://jsfiddle.net/B1KMusic/gu4ofjre/3/embedded/result%2Cjs/
- Modified version to scale it up, expanding on the "small number of chains" peculiarity:
- https://pastebin.com/VUfbVGg5
- While I was playing with the code to generate a huge string of unique names, I decided to see what happens if I replace arr[l-1] (the last element of the current generation, nondestructive) with arr.shift() (the first element, destructive)
- arr = "abcdefghijklmnopqrstuvwxyz".split("");
- for(let i = 0; i < 6; i++)
- arr.forEach(function(el){
- arr.push(el + arr.shift());
- });
- arr.join(",");
- The results were quite surprising:
- 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,ymmgmgqmgqqimgqqiqiiemgqqiqiieqiieieecmgqqiqiieqiieieecqiieieecieececcb,ukswyymymmgymmgmgqymmgmgqmgqqiymmgmgqmgqqimgqqiqiieymmgmgqmgqqimgqqiqiiemgqqiqiieqiieieec,ieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyecouukuksukswukswyukswyymecouukuksukswukswyukswyymukswyymymmgecouukuksukswukswyukswyymukswyymymmgukswyymymmgymmgmggd,ecouukuksukswukswyukswyymukswyymymmgukswyymymmgymmgmgqukswyymymmgymmgmgqymmgmgqmgqqiukswyymymmgymmgmgqymmgmgqmgqqiymmgmgqmgqqimgqqiqiie,mgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecouqiieieecieececoieececoecouieececoecouecouukqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukukkf,qiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksieececoecouecouukecouukuksecouukuksukswieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyecouukuksukswukswyukswyymieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyecouukuksukswukswyukswyymecouukuksukswukswyukswyymukswyymymmg,ymmgmgqmgqqimgqqiqiiemgqqiqiieqiieieecmgqqiqiieqiieieecqiieieecieececomgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecooh,ieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyecouukuksukswukswyukswyymecouukuksukswukswyukswyymukswyymymmgecouukuksukswukswyukswyymukswyymymmgukswyymymmgymmgmgqecouukuksukswukswyukswyymukswyymymmgukswyymymmgymmgmgqukswyymymmgymmgmgqymmgmgqmgqqi,mgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecouqiieieecieececoieececoecouieececoecouecouukqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksieececoecouecouukecouukuksecouukuksukssj,ymmgmgqmgqqimgqqiqiiemgqqiqiieqiieieecmgqqiqiieqiieieecqiieieecieececomgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecoumgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecouqiieieecieececoieececoecouieececoecouecouuk,mgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecouqiieieecieececoieececoecouieececoecouecouukqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksieececoecouecouukecouukuksecouukuksukswqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksieececoecouecouukecouukuksecouukuksukswieececoecouecouukecouukuksecouukuksukswecouukuksukswukswwl,mgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecouqiieieecieececoieececoecouieececoecouecouukqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksieececoecouecouukecouukuksecouukuksukswqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksieececoecouecouukecouukuksecouukuksukswieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksieececoecouecouukecouukuksecouukuksukswieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyecouukuksukswukswyukswyym,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaan,ukswyymymmgymmgmgqymmgmgqmgqqiymmgmgqmgqqimgqqiqiieymmgmgqmgqqimgqqiqiiemgqqiqiieqiieieecymmgmgqmgqqimgqqiqiiemgqqiqiieqiieieecmgqqiqiieqiieieecqiieieecieececo,ecouukuksukswukswyukswyymukswyymymmgukswyymymmgymmgmgqukswyymymmgymmgmgqymmgmgqmgqqiukswyymymmgymmgmgqymmgmgqmgqqiymmgmgqmgqqimgqqiqiieukswyymymmgymmgmgqymmgmgqmgqqiymmgmgqmgqqimgqqiqiieymmgmgqmgqqimgqqiqiiemgqqiqiieqiieiep,qiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksieececoecouecouukecouukuksecouukuksukswieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyecouukuksukswukswyukswyymieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyecouukuksukswukswyukswyymecouukuksukswukswyukswyymukswyymymmgieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyecouukuksukswukswyukswyymecouukuksukswukswyukswyymukswyymymmgecouukuksukswukswyukswyymukswyymymmgukswyymymmgymmgmgq,ieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyecouukuksukswukswyukswyymecouukuksukswukswyukswyymukswyymymmgecouukuksukswukswyukswyymukswyymymmgukswyymymmgymmgmgqecouukuksukswukswyukswyymukswyymymmgukswyymymmgymmgmgqukswyymymmgymmgmgqymmgmgqmgqqiecouukuksukswukswyukswyymukswyymymmgukswyymymmgymmgmgqukswyymymmgymmgmgqymmgmgqmgqqiukswyymymmgymmgmgqymmgmgqmgqqiymmgmgqmgqqimgqqiqir,ymmgmgqmgqqimgqqiqiiemgqqiqiieqiieieecmgqqiqiieqiieieecqiieieecieececomgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecoumgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecouqiieieecieececoieececoecouieececoecouecouukmgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecouqiieieecieececoieececoecouieececoecouecouukqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuks,mgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecouqiieieecieececoieececoecouieececoecouecouukqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksieececoecouecouukecouukuksecouukuksukswqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksieececoecouecouukecouukuksecouukuksukswieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksieececoecouecouukecouukuksecouukuksukswieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyecouukuksukswukswyukswyymqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksieececoecouecouukecouukuksecouukuksukswieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyecouukuksukswukswyukswyymieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyecouukuksukswukswyukswyymecouukuksukswukswyukswyymukswyymymt,ukswyymymmgymmgmgqymmgmgqmgqqiymmgmgqmgqqimgqqiqiieymmgmgqmgqqimgqqiqiiemgqqiqiieqiieieecymmgmgqmgqqimgqqiqiiemgqqiqiieqiieieecmgqqiqiieqiieieecqiieieecieececoymmgmgqmgqqimgqqiqiiemgqqiqiieqiieieecmgqqiqiieqiieieecqiieieecieececomgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecou,qiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksieececoecouecouukecouukuksecouukuksukswieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyecouukuksukswukswyukswyymieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyecouukuksukswukswyukswyymecouukuksukswukswyukswyymukswyymymmgieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyecouukuksukswukswyukswyymecouukuksukswukswyukswyymukswyymymmgecouukuksukswukswyukswyymukswyymymmgukswyymymmgymmgmgqieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyecouukuksukswukswyukswyymecouukuksukswukswyukswyymukswyymymmgecouukuksukswukswyukswyymukswyymymmgukswyymymmgymmgmgqecouukuksukswukswyukswyymukswyymymmgukswyymymmgymmgmgqukswyymymmgymmgmgqymmgmgqmgqv,ymmgmgqmgqqimgqqiqiiemgqqiqiieqiieieecmgqqiqiieqiieieecqiieieecieececomgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecoumgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecouqiieieecieececoieececoecouieececoecouecouukmgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecouqiieieecieececoieececoecouieececoecouecouukqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksmgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecouqiieieecieececoieececoecouieececoecouecouukqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksieececoecouecouukecouukuksecouukuksuksw,ukswyymymmgymmgmgqymmgmgqmgqqiymmgmgqmgqqimgqqiqiieymmgmgqmgqqimgqqiqiiemgqqiqiieqiieieecymmgmgqmgqqimgqqiqiiemgqqiqiieqiieieecmgqqiqiieqiieieecqiieieecieececoymmgmgqmgqqimgqqiqiiemgqqiqiieqiieieecmgqqiqiieqiieieecqiieieecieececomgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecouymmgmgqmgqqimgqqiqiiemgqqiqiieqiieieecmgqqiqiieqiieieecqiieieecieececomgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecoumgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecouqiieieecieececoieececoecouieececoecouecoux,ymmgmgqmgqqimgqqiqiiemgqqiqiieqiieieecmgqqiqiieqiieieecqiieieecieececomgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecoumgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecouqiieieecieececoieececoecouieececoecouecouukmgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecouqiieieecieececoieececoecouieececoecouecouukqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksmgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecouqiieieecieececoieececoecouieececoecouecouukqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksieececoecouecouukecouukuksecouukuksukswmgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecouqiieieecieececoieececoecouieececoecouecouukqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksieececoecouecouukecouukuksecouukuksukswqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksieececoecouecouukecouukuksecouukuksukswieececoecouecouukecouukuksecouukuksukswecouukuksukswukswy,ymmgmgqmgqqimgqqiqiiemgqqiqiieqiieieecmgqqiqiieqiieieecqiieieecieececomgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecoumgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecouqiieieecieececoieececoecouieececoecouecouukmgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecouqiieieecieececoieececoecouieececoecouecouukqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksmgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecouqiieieecieececoieececoecouieececoecouecouukqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksieececoecouecouukecouukuksecouukuksukswmgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecouqiieieecieececoieececoecouieececoecouecouukqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksieececoecouecouukecouukuksecouukuksukswqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksieececoecouecouukecouukuksecouukuksukswieececoecouecouukecouukuksecouukuksukswecouukuksukswukswymgqqiqiieqiieieecqiieieecieececoqiieieecieececoieececoecouqiieieecieececoieececoecouieececoecouecouukqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksieececoecouecouukecouukuksecouukuksukswqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksieececoecouecouukecouukuksecouukuksukswieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyqiieieecieececoieececoecouieececoecouecouukieececoecouecouukecouukuksieececoecouecouukecouukuksecouukuksukswieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyieececoecouecouukecouukuksecouukuksukswecouukuksukswukswyecouukuksukswukswyukswyz'
- How does this happen? keep in mind that we start with [a,b,c,...x,y,z] as iteration 0, and the following iterations are, at least theoretically:
- [b,c,d,...x,y,z,aa]
- [c,d,e,...x,y,z,aa,bb]
- [d,e,f,...x,y,z,aa,bb,cc]
- and so on until you have generation #2:
- [aa,bb,cc,...xx,yy,zz]
- and this goes on for only 6 generations to end up with the monstrosity above.
- Have I discovered something vaguely reminiscent of undefined behavior (like how using memcpy or memmove in C results in UB if the regions overlap)? Does forEach have some strange nuance when it comes to modifying the list *while* iterating through it? Or is there something else going on?
- Note: I am aware that generation #2 actually looks like this: [aa,cb,ec,gd,ie,kf,mg,oh,qi,sj,uk,wl,ym,aan,eco,iep,mgq,qir,uks,ymt,ecou,mgqv,uksw,ecoux,ukswy,ukswyz]. This question is about expected behavior vs actual behavior and how/why the results come about.
Advertisement
Add Comment
Please, Sign In to add comment