Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Code Puzzler: Color Rotator

DZone's Guide to

Code Puzzler: Color Rotator

· Web Dev Zone ·
Free Resource

Discover how you can help protect your mobile, web-based and cloud applications with IBM Application Security on Cloud.

 

It has been a while since my last ColdFusion Friday puzzler, so I hope you enjoy this one. It occurred to me while driving my eldest to school Wednesday morning and in my "not quite awake yet" semi-conscious daze, it seemed like a sneaky little puzzle. I figured out a possible simple solution before I got home, but I'm curious to see what others make of it. Ready?

Your client wants their web site to make use of a rotating color background. Each day, the background color of the web site will change. The list of colors used for the background are: red,blue,green,yellow,orange. (I know, I know, this is why I don't do web design.)

Your goal is to write a UDF that accepts a date and selects a color. If you pass the day after that initial date, you should pick the next day in the list. On the day you pick orange, the next day would pick red.

You may think - why not simply use the the day of the week modded by 5?

<cfset colors = ["red","blue","green","yellow","orange"]>

<cfloop index="x" from="0" to="15">
  <cfset day = dateAdd("d", x, now())>
	<cfset color = colors [ (dayOfWeek(day) mod 5) + 1]>
	<cfoutput>#color#<br/></cfoutput>
</cfloop>

But this doesn't work on the edges. You could switch to the day of the year but would have the same issue (although a heck of a lot less). So how would you solve this issue? Note that you cannot persist anything in the database (or file system, etc).

Rapidly detect security vulnerabilities in your web, mobile and desktop applications with IBM Application Security on Cloud. Register for your complimentary 30-day trial now.

Topics:

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}