@freemo @serra so system could be base 6 0-5 for the price. Then you have 4 left over 6,7,8,9 or wouldn't hurt my feelings to call them 0,1,2,3 knowing that you could do a second base 4 number as a multiplier. But I like it as a permutation value that could represent a fixed multiplier. Such as 0123 = 100% and 1023 = 110% and 1203 = 115% and 1230 = 130% then 2013 =90% and 2103 = 85% and 2130 = 70%
@freemo @serra not necessarily, the isogram will do 0-9 but you only use 0 to base-1 for your price then use the permutations of base to 9 for your modifier. So the price part WOD simply get calculated according to its base. Then the modifier would be calculated as a value based on permutation like 6789 = 1 to 9876 = 24 which could be arbitrary multipliers or divisors of the price.
@freemo @serra what I was thinking might be that if you set the prices using base 8 then you would have two letters left over so in the previous example a-h could be the only numbers used in the actual base price and i and j 8 and 9 could indicate whether or not to apply a consistent discount. best case you could have 89 meaning that rest of the price is standard and 98 means divide for a x% discount. I think that would be doable. Then if you could represent it with base 5 or 6 you would have 4 or 5 letters left over to have a modifier. I think it is a doable math issue once solved would make for some interesting "word" choice problems with fun meaningful anagrams.
@freemo When I was interviewing candidates for jobs in SQL my idea was to have them solve a problem like how to design a database to manage WIlly Loman's missionary book.
However, when I would get some of these young guys in, they will have never seen or read the play. Or never done old school sales where they used a "missionary book."
So for a 15 minute interview I ended up trying to explain the Play or Sales techniques to someone instead of moving forward with questions about table design and so forth. I had to learn to make much simpler examples. Because things you assume are common knowledge, aren't always so common.
The base premise is that you would have picked a word you could remember like "UPHOLSTERY" then you would be able to look at the sticker and see Yyy and know it was 9.99 without having to have a decoder ring and calculator :)
But as a coding problem I am moving away from that and letting a computer do all the work. With that in mind just wondering if I could simply change the letters around to accomplish an overall discount or markup. Hey, it might not be possible, but it sounded like it should be.
(This is starting to remind me of my "Death of a Salesman" interview question fiasco :) remind me to tell you that story some time)
@twee@patch.cx what do you make? I do CBGs and Canjos
what I was thinking was something like using the word "ABCDEFGHIJ" to encode a price BAjj as 10.00 if I were to change the word to "BCDEFGHIJA" then decoded the same price it would be $09.99.
I wonder if there is a system whereby encoding with one word, and decoding with another would be capable of effecting a change of some reasonable % like 10%, 15%, 35%.
I kind of thought you would have to change bases like base(*) or something, or if you had a pair of numbers that would be multiiplied or otherwise functionally modified. The problem being that you only have 10 numbers to play with.
I am not saying it is possible, but it seems like you could do it. I don't have a problem just trying to make one. Otherwise I don't have a real problem for this week yet. :)
@serra that just begs for a rick roll :) I was thinking something more like encoding with one word, and then switch the letters around in the word and effect a 15, 20, 30% discount. Or something like that.
Okay, maybe you can help me come up with a problem. I can feel it coming on, so here is where I am going:
A trick for pricing things for negotiation is to hide the price encoded. One of the ways of doing this is using a 10 letter isogram such as "upholstery" to convert 0=u, 1=p, 2=h...9=y. So then you could mark a tag or sticker with Tly for $6.49 (with the capitols for dollars and the lower case for cents) Alternatively, you could have an asking price and hide a lowest taking price TlyLuu Meaning that you could ask 6.49 but settle for 4.00. This way someone else could negotiate with the customers, from the person that set the prices.
So writing a program should be unnecessary, the reason for using the isogram is to make it easy to remember and figure it out simply.
So how hard would a program to do this be? Ideas?
This is not a programming question per-se. It, was however, quite interesting and fun to figure out. I am still looking for a new program for this weekend. Unfortunately, no one seemed too interested in last weekend's one, so I may let it float. But I am still looking for one anyway.
An evil warden holds you prisoner, but offers you a chance to escape. There are 3 doors A, B, and C. Two of the doors lead to freedom and the third door leads to lifetime imprisonment, but you do not which door is what type. You are allowed to point to a door and ask a single yes-no question to the warden. If you point to a door that leads to freedom, the warden does answer your question truthfully. But if you point to the door that leads to imprisonment, the warden answers your question randomly, either saying "yes" or "no" by chance. Can you think of a question and figure out a way to escape for sure?
@freemo I like this way of examining the data. I may give it a try after all.
Octave solution
Linear in time and space by taking advantage of the Fibonacci numbers.
function count = interpretations(string)
ambig = string(1:end-1) == '1' | (string(1:end-1) == '2' & string(2:end) <= '6');
ambig &= string(1:end-1) ~= '0' & string(2:end) ~= '0' & [string(3:end) '1'] ~= '0';
ambig = [false ambig false];
consec = find(ambig(1:end-1) & !ambig(2:end)) - find(!ambig(1:end-1) & ambig(2:end));
fibo = zeros(max(consec), 1);
fibo(1:2) = [2 3];
for i = 3:max(consec)
fibo(i) = fibo(i - 1) + fibo(i - 2); end;
count = prod(arrayfun(@(x)fibo(x), consec)); end;
@billstclair @freemo how does that solve it? Am I missing something?
The green faerie