Worn-tile Scrabble
$begingroup$
Problem
You're stuck in a cabin in the middle of the woods, with only an old scrabble set to entertain yourselves. Upon inspection you see that the scrabble letters are so worn, that only the points for each letter are visible.
Nonetheless you decide to play a game. You pull seven letters from the bag and place them on your tray, your challenge is to determine what those letters could be.
So generally, given a list of points convert it into any possible string or list of letters.
Scrabble Tiles and Distributions
- 2 blank tiles (scoring 0 points)
- 1 point: E ×12, A ×9, I ×9, O ×8, N ×6, R ×6, T ×6, L ×4, S ×4, U ×4
- 2 points: D ×4, G ×3
- 3 points: B ×2, C ×2, M ×2, P ×2
- 4 points: F ×2, H ×2, V ×2, W ×2, Y ×2
- 5 points: K ×1
- 8 points: J ×1, X ×1
- 10 points: Q ×1, Z ×1
So if you have a list of points [10,10,8,5,1,1,1]
then "QZJKEEE"
would be valid but "QQJKEEE"
would not be valid (since there is only 1 Q tile in the bag)
Problem Specific Rules
- You may assume all inputs are valid and that there will always be 7 tiles (i.e it wont be a list of seven 10 point tiles and won't be 9 tiles)
- You can assume no tiles have been previously pulled from the bag (so the distribution is the standard distribution of english tiles as defined above)
- You do not have to generate a valid word, only a valid string of letters.
- The order of your string is irrelevant as long as for each tile there is a corresponding letter.
- Points are based on the standard english scrabble tile points as defined above.
- You may output in upper or lower case, for a blank tile you may output either a space character or an underscore '_'
- Your answer may output as any reasonable representation of the tiles such as a List, String, Array or Sequence
General rules:
- This is code-golf, so shortest answer in bytes wins.
Don't let code-golf languages discourage you from posting answers with non-codegolfing languages. Try to come up with an as short as possible answer for 'any' programming language.
Standard rules apply for your answer with default I/O rules, so you are allowed to use STDIN/STDOUT, functions/method with the proper parameters and return-type, full programs. Your call.
Default Loopholes are forbidden.- If possible, please add a link with a test for your code (i.e. TIO).
- Also, adding an explanation for your answer is highly recommended.
Test Cases
Obviously since you can output any possible value it's difficult to define strict test cases.
Some cases with a possible valid return value:
[10,0,10,5,8,8,0] -> "Q ZKJX "
[1,1,1,1,1,1,1] -> "EEEEEEE"
[1,2,3,4,5,8,0] -> "NDBHKJ "
[2,2,2,2,2,2,2] -> "DGDGDGD"
Some cases with an invalid return value:
[10,0,10,5,8,8,0] -> "Q QKJX " - Too many Qs
[1,1,1,1,1,1,1] -> "EEEEEE " - Space is 0 points not 1
[1,2,3,4,5,8,0] -> "NDBH" - Too short
[1,2,3,4,5,8,0] -> "NDBHKJ I" - Too long
[1,2,3,4,5,8,0] -> "ÉDBHKJ1" - Contains none scrabble characters
[2,2,2,2,2,2,2] -> "GDGDGDG" - Contains too many Gs (case for invalid cycling)
code-golf string scrabble
$endgroup$
|
show 6 more comments
$begingroup$
Problem
You're stuck in a cabin in the middle of the woods, with only an old scrabble set to entertain yourselves. Upon inspection you see that the scrabble letters are so worn, that only the points for each letter are visible.
Nonetheless you decide to play a game. You pull seven letters from the bag and place them on your tray, your challenge is to determine what those letters could be.
So generally, given a list of points convert it into any possible string or list of letters.
Scrabble Tiles and Distributions
- 2 blank tiles (scoring 0 points)
- 1 point: E ×12, A ×9, I ×9, O ×8, N ×6, R ×6, T ×6, L ×4, S ×4, U ×4
- 2 points: D ×4, G ×3
- 3 points: B ×2, C ×2, M ×2, P ×2
- 4 points: F ×2, H ×2, V ×2, W ×2, Y ×2
- 5 points: K ×1
- 8 points: J ×1, X ×1
- 10 points: Q ×1, Z ×1
So if you have a list of points [10,10,8,5,1,1,1]
then "QZJKEEE"
would be valid but "QQJKEEE"
would not be valid (since there is only 1 Q tile in the bag)
Problem Specific Rules
- You may assume all inputs are valid and that there will always be 7 tiles (i.e it wont be a list of seven 10 point tiles and won't be 9 tiles)
- You can assume no tiles have been previously pulled from the bag (so the distribution is the standard distribution of english tiles as defined above)
- You do not have to generate a valid word, only a valid string of letters.
- The order of your string is irrelevant as long as for each tile there is a corresponding letter.
- Points are based on the standard english scrabble tile points as defined above.
- You may output in upper or lower case, for a blank tile you may output either a space character or an underscore '_'
- Your answer may output as any reasonable representation of the tiles such as a List, String, Array or Sequence
General rules:
- This is code-golf, so shortest answer in bytes wins.
Don't let code-golf languages discourage you from posting answers with non-codegolfing languages. Try to come up with an as short as possible answer for 'any' programming language.
Standard rules apply for your answer with default I/O rules, so you are allowed to use STDIN/STDOUT, functions/method with the proper parameters and return-type, full programs. Your call.
Default Loopholes are forbidden.- If possible, please add a link with a test for your code (i.e. TIO).
- Also, adding an explanation for your answer is highly recommended.
Test Cases
Obviously since you can output any possible value it's difficult to define strict test cases.
Some cases with a possible valid return value:
[10,0,10,5,8,8,0] -> "Q ZKJX "
[1,1,1,1,1,1,1] -> "EEEEEEE"
[1,2,3,4,5,8,0] -> "NDBHKJ "
[2,2,2,2,2,2,2] -> "DGDGDGD"
Some cases with an invalid return value:
[10,0,10,5,8,8,0] -> "Q QKJX " - Too many Qs
[1,1,1,1,1,1,1] -> "EEEEEE " - Space is 0 points not 1
[1,2,3,4,5,8,0] -> "NDBH" - Too short
[1,2,3,4,5,8,0] -> "NDBHKJ I" - Too long
[1,2,3,4,5,8,0] -> "ÉDBHKJ1" - Contains none scrabble characters
[2,2,2,2,2,2,2] -> "GDGDGDG" - Contains too many Gs (case for invalid cycling)
code-golf string scrabble
$endgroup$
$begingroup$
Do I need to output a string or is a list ok?
$endgroup$
– Maltysen
13 hours ago
$begingroup$
You can output a list, I'll update the question
$endgroup$
– Expired Data
13 hours ago
$begingroup$
What can I output for a blank?
$endgroup$
– Maltysen
13 hours ago
$begingroup$
Good question I'll let you output a space or _, since typically it could be represented by either. I'll update the question
$endgroup$
– Expired Data
13 hours ago
3
$begingroup$
Suggested test case:[2,2,2,2,2,2,2]
(the only case where it's important to start with aD
rather than aG
if a cycling method is used)
$endgroup$
– Arnauld
12 hours ago
|
show 6 more comments
$begingroup$
Problem
You're stuck in a cabin in the middle of the woods, with only an old scrabble set to entertain yourselves. Upon inspection you see that the scrabble letters are so worn, that only the points for each letter are visible.
Nonetheless you decide to play a game. You pull seven letters from the bag and place them on your tray, your challenge is to determine what those letters could be.
So generally, given a list of points convert it into any possible string or list of letters.
Scrabble Tiles and Distributions
- 2 blank tiles (scoring 0 points)
- 1 point: E ×12, A ×9, I ×9, O ×8, N ×6, R ×6, T ×6, L ×4, S ×4, U ×4
- 2 points: D ×4, G ×3
- 3 points: B ×2, C ×2, M ×2, P ×2
- 4 points: F ×2, H ×2, V ×2, W ×2, Y ×2
- 5 points: K ×1
- 8 points: J ×1, X ×1
- 10 points: Q ×1, Z ×1
So if you have a list of points [10,10,8,5,1,1,1]
then "QZJKEEE"
would be valid but "QQJKEEE"
would not be valid (since there is only 1 Q tile in the bag)
Problem Specific Rules
- You may assume all inputs are valid and that there will always be 7 tiles (i.e it wont be a list of seven 10 point tiles and won't be 9 tiles)
- You can assume no tiles have been previously pulled from the bag (so the distribution is the standard distribution of english tiles as defined above)
- You do not have to generate a valid word, only a valid string of letters.
- The order of your string is irrelevant as long as for each tile there is a corresponding letter.
- Points are based on the standard english scrabble tile points as defined above.
- You may output in upper or lower case, for a blank tile you may output either a space character or an underscore '_'
- Your answer may output as any reasonable representation of the tiles such as a List, String, Array or Sequence
General rules:
- This is code-golf, so shortest answer in bytes wins.
Don't let code-golf languages discourage you from posting answers with non-codegolfing languages. Try to come up with an as short as possible answer for 'any' programming language.
Standard rules apply for your answer with default I/O rules, so you are allowed to use STDIN/STDOUT, functions/method with the proper parameters and return-type, full programs. Your call.
Default Loopholes are forbidden.- If possible, please add a link with a test for your code (i.e. TIO).
- Also, adding an explanation for your answer is highly recommended.
Test Cases
Obviously since you can output any possible value it's difficult to define strict test cases.
Some cases with a possible valid return value:
[10,0,10,5,8,8,0] -> "Q ZKJX "
[1,1,1,1,1,1,1] -> "EEEEEEE"
[1,2,3,4,5,8,0] -> "NDBHKJ "
[2,2,2,2,2,2,2] -> "DGDGDGD"
Some cases with an invalid return value:
[10,0,10,5,8,8,0] -> "Q QKJX " - Too many Qs
[1,1,1,1,1,1,1] -> "EEEEEE " - Space is 0 points not 1
[1,2,3,4,5,8,0] -> "NDBH" - Too short
[1,2,3,4,5,8,0] -> "NDBHKJ I" - Too long
[1,2,3,4,5,8,0] -> "ÉDBHKJ1" - Contains none scrabble characters
[2,2,2,2,2,2,2] -> "GDGDGDG" - Contains too many Gs (case for invalid cycling)
code-golf string scrabble
$endgroup$
Problem
You're stuck in a cabin in the middle of the woods, with only an old scrabble set to entertain yourselves. Upon inspection you see that the scrabble letters are so worn, that only the points for each letter are visible.
Nonetheless you decide to play a game. You pull seven letters from the bag and place them on your tray, your challenge is to determine what those letters could be.
So generally, given a list of points convert it into any possible string or list of letters.
Scrabble Tiles and Distributions
- 2 blank tiles (scoring 0 points)
- 1 point: E ×12, A ×9, I ×9, O ×8, N ×6, R ×6, T ×6, L ×4, S ×4, U ×4
- 2 points: D ×4, G ×3
- 3 points: B ×2, C ×2, M ×2, P ×2
- 4 points: F ×2, H ×2, V ×2, W ×2, Y ×2
- 5 points: K ×1
- 8 points: J ×1, X ×1
- 10 points: Q ×1, Z ×1
So if you have a list of points [10,10,8,5,1,1,1]
then "QZJKEEE"
would be valid but "QQJKEEE"
would not be valid (since there is only 1 Q tile in the bag)
Problem Specific Rules
- You may assume all inputs are valid and that there will always be 7 tiles (i.e it wont be a list of seven 10 point tiles and won't be 9 tiles)
- You can assume no tiles have been previously pulled from the bag (so the distribution is the standard distribution of english tiles as defined above)
- You do not have to generate a valid word, only a valid string of letters.
- The order of your string is irrelevant as long as for each tile there is a corresponding letter.
- Points are based on the standard english scrabble tile points as defined above.
- You may output in upper or lower case, for a blank tile you may output either a space character or an underscore '_'
- Your answer may output as any reasonable representation of the tiles such as a List, String, Array or Sequence
General rules:
- This is code-golf, so shortest answer in bytes wins.
Don't let code-golf languages discourage you from posting answers with non-codegolfing languages. Try to come up with an as short as possible answer for 'any' programming language.
Standard rules apply for your answer with default I/O rules, so you are allowed to use STDIN/STDOUT, functions/method with the proper parameters and return-type, full programs. Your call.
Default Loopholes are forbidden.- If possible, please add a link with a test for your code (i.e. TIO).
- Also, adding an explanation for your answer is highly recommended.
Test Cases
Obviously since you can output any possible value it's difficult to define strict test cases.
Some cases with a possible valid return value:
[10,0,10,5,8,8,0] -> "Q ZKJX "
[1,1,1,1,1,1,1] -> "EEEEEEE"
[1,2,3,4,5,8,0] -> "NDBHKJ "
[2,2,2,2,2,2,2] -> "DGDGDGD"
Some cases with an invalid return value:
[10,0,10,5,8,8,0] -> "Q QKJX " - Too many Qs
[1,1,1,1,1,1,1] -> "EEEEEE " - Space is 0 points not 1
[1,2,3,4,5,8,0] -> "NDBH" - Too short
[1,2,3,4,5,8,0] -> "NDBHKJ I" - Too long
[1,2,3,4,5,8,0] -> "ÉDBHKJ1" - Contains none scrabble characters
[2,2,2,2,2,2,2] -> "GDGDGDG" - Contains too many Gs (case for invalid cycling)
code-golf string scrabble
code-golf string scrabble
edited 12 hours ago
Expired Data
asked 13 hours ago
Expired DataExpired Data
718116
718116
$begingroup$
Do I need to output a string or is a list ok?
$endgroup$
– Maltysen
13 hours ago
$begingroup$
You can output a list, I'll update the question
$endgroup$
– Expired Data
13 hours ago
$begingroup$
What can I output for a blank?
$endgroup$
– Maltysen
13 hours ago
$begingroup$
Good question I'll let you output a space or _, since typically it could be represented by either. I'll update the question
$endgroup$
– Expired Data
13 hours ago
3
$begingroup$
Suggested test case:[2,2,2,2,2,2,2]
(the only case where it's important to start with aD
rather than aG
if a cycling method is used)
$endgroup$
– Arnauld
12 hours ago
|
show 6 more comments
$begingroup$
Do I need to output a string or is a list ok?
$endgroup$
– Maltysen
13 hours ago
$begingroup$
You can output a list, I'll update the question
$endgroup$
– Expired Data
13 hours ago
$begingroup$
What can I output for a blank?
$endgroup$
– Maltysen
13 hours ago
$begingroup$
Good question I'll let you output a space or _, since typically it could be represented by either. I'll update the question
$endgroup$
– Expired Data
13 hours ago
3
$begingroup$
Suggested test case:[2,2,2,2,2,2,2]
(the only case where it's important to start with aD
rather than aG
if a cycling method is used)
$endgroup$
– Arnauld
12 hours ago
$begingroup$
Do I need to output a string or is a list ok?
$endgroup$
– Maltysen
13 hours ago
$begingroup$
Do I need to output a string or is a list ok?
$endgroup$
– Maltysen
13 hours ago
$begingroup$
You can output a list, I'll update the question
$endgroup$
– Expired Data
13 hours ago
$begingroup$
You can output a list, I'll update the question
$endgroup$
– Expired Data
13 hours ago
$begingroup$
What can I output for a blank?
$endgroup$
– Maltysen
13 hours ago
$begingroup$
What can I output for a blank?
$endgroup$
– Maltysen
13 hours ago
$begingroup$
Good question I'll let you output a space or _, since typically it could be represented by either. I'll update the question
$endgroup$
– Expired Data
13 hours ago
$begingroup$
Good question I'll let you output a space or _, since typically it could be represented by either. I'll update the question
$endgroup$
– Expired Data
13 hours ago
3
3
$begingroup$
Suggested test case:
[2,2,2,2,2,2,2]
(the only case where it's important to start with a D
rather than a G
if a cycling method is used)$endgroup$
– Arnauld
12 hours ago
$begingroup$
Suggested test case:
[2,2,2,2,2,2,2]
(the only case where it's important to start with a D
rather than a G
if a cycling method is used)$endgroup$
– Arnauld
12 hours ago
|
show 6 more comments
11 Answers
11
active
oldest
votes
$begingroup$
Charcoal, 33 bytes
⭆觧⪪”&↖“Vh_z↶∕¡⌈∨₂χ¹‖◨⌊″”¶ι№…θκι
Try it online! Link is to verbose version of code. Explanation:
θ Input array
⭆ Map over elements and join
”...” Literal string " nEnDGnBCMPnFHVWnKnnnJXnnQZ"
⪪ ¶ Split on newlines
§ ι Indexed by current element
§ Cyclically indexed by
№…θκι Number of times current element has already appeared
Implcitly print
$endgroup$
add a comment |
$begingroup$
JavaScript (ES6), 137 ... 84 78 77 76 bytes
Saved 10 bytes by using Neil's cycling method
Returns a list of tiles. Uses _
for blank tiles.
a=>a.map(o=n=>"____FHVWGDGD_K__BCMPEEEE_ZQ__XJ"[n*20%44%32+(o[n]=-~o[n])%4])
Try it online!
How?
For each number of points, we cycle through a group of exactly 4 tiles, starting with the second tile of each group (this is important for G
vs D
):
points | group | max. sequence
--------+-------+---------------
0 | ____ | __
1 | EEEE | EEEEEEE
2 | GDGD | DGDGDGD
3 | BCMP | CMPBCMP
4 | FHVW | HVWFHVW
5 | _K__ | K
8 | _XJ_ | XJ }--- these letters may only appear once each
10 | _ZQ_ | ZQ /
All these groups are stored as a single string of 31 characters:
____FHVWGDGD_K__BCMPEEEE_ZQ__XJ
^ ^ ^ ^ ^ ^ ^ ^
0 4 8 12 16 20 24 28
NB: We don't need to store the final "_"
in "_XJ_"
, as it will never be accessed anyway.
The number of points $n$ is converted to the correct index $i_n$ into this string with:
$$i_n=((20times n)bmod 44)bmod 32$$
n | *20 | mod 44 | mod 32 | group
----+-----+--------+--------+-------
0 | 0 | 0 | 0 | ____
1 | 20 | 20 | 20 | EEEE
2 | 40 | 40 | 8 | GDGD
3 | 60 | 16 | 16 | BCMP
4 | 80 | 36 | 4 | FHVW
5 | 100 | 12 | 12 | _K__
8 | 160 | 28 | 28 | _XJ_
10 | 200 | 24 | 24 | _ZQ_
The current position in each group is stored in the object $o$.
$endgroup$
$begingroup$
Advancing o[n] by 8 each time would cost one extra character for the advancement, but allow one to replace %4 and %32 both with &31 for a net win. My best, based on yours, would bea=>a.map(o=n=>('?ED?BWQ?_EG?CFZ?_EDJMH?K?EGXPV'[n*9.4+(o[n]=7-~o[n])&31]))
. A shorter, "almost" version isa=>a.map(o=n=>("_EDBFK_EDCHJQEGMVXZEGPW"[n+(o[n]=5-~o[n])%24]))
but that approach would needs a compact way to map the values 8 and 10 into 11 and 12, plus a slight adjustment to the string to fix an off-by-one problem.
$endgroup$
– supercat
2 hours ago
$begingroup$
@supercat Sounds good! I'll have a closer look at it tomorrow.
$endgroup$
– Arnauld
2 hours ago
add a comment |
$begingroup$
Pyth - 92 86 83 81 80 75 60 52 49 42 36 bytes
Loops through input, popping off the available letters. I just have one of each letter that together give 7 for that point category. Now using packed string encoding.
K[M*L7c."B_êº çÑOÒ
7âCkÑ"Lm.)@K
K Assign to K
[M Map list(for popping). Uses a quirk of M to splat each first
*L7 Map repeating each string by 7
c L Split on occurrences of 'L'
."..." Packed string encoding of the needed letters
m (Q) Map on input (input is taken implicitly)
.) Pop. This returns the first element after removing it
@K Index into K
(d) The loop variable is given implicitly
Btw, this is the original letter string before encoding: "_ E DG BCMP FHVW K JX QZ"
.
Try it online.
$endgroup$
add a comment |
$begingroup$
Perl 5, 71 bytes
@a=(__,'E'x7,DDDDGGG,BBCCMMP,FFHHVVW,K,1,1,JX,1,QZ);say chop$a[$_]for<>
Try it online!
$endgroup$
add a comment |
$begingroup$
Jelly, 31 30 27 bytes
“ÑṠX(YḤO⁻©Ɓḣ’ṃØA;⁶s2ɓṢĖUœị
A monadic Link accepting a list of integers which yields a list of characters.
- a mishmash of my previous, below, and my improvement of Nick Kennedy's
Try it online!
The output is not given in the same order as the input (this is allowed).
Using 2 of my own additions to the language in an answer does not happen often! (ṃ
and ɓ
here).
How?
“...’ṃØA;⁶s2ɓṢĖUœị - Link: list of integers, V e.g. [10,1,0,3,2,1,10]
“...’ - 4249912893109453671990223738
ØA - 'ABC...XYZ'
ṃ - base decompress 'ENDGMPFYKKZZZZJXZZQZ'
; - concatenate
⁶ - a space 'ENDGMPFYKKZZZZJXZZQZ '
s2 - split into twos ['EN','DG','MP','FY','KK','ZZ','ZZ','JX','ZZ','QZ',' ']
ɓ - start a new dyadic chain with swapped arguments - i.e. f(V,that)
Ṣ - sort [0,1,1,2,3,10,10]
Ė - enumerate [[1,0],[2,1],[3,1],[4,2],[5,3],[6,10],[7,10]]
U - upend [[0,1],[1,2],[1,3],[2,4],[3,5],[10,6],[10,7]]
œị - multi-dimensional index into ' NWGMZQ'
(1-based and modular)
previous @ 30
“²rṛʂṂø5=Ɓṇ^N¥Y»⁾tky;⁶s2ɓṢĖUœị
A monadic Link accepting a list of integers which yields a list of characters.
Try it online!
This one's output is also mixed-case (this is allowed).
How?
“...»⁾tky;⁶s2ɓṢĖUœị - Link: list of integers, V e.g. [10,1,0,3,2,1,10]
“...» - compression of dictionary entries:
- 'end', 'GMP', 'fyttes', 'adj', and 'xci' and the string 'qz'
- 'endGMPfyttesadjxciqz'
y - translate with:
⁾tk - ['t', 'k'] 'endGMPfykkesadjxciqz'
;⁶s2ɓṢĖUœị - ...
- ...then like the above method ' neGMzq'
$endgroup$
add a comment |
$begingroup$
05AB1E, 70 52 39 38 bytes
.•Mñ&Àû«ì{₆v*Å+µ-•#ðšε7∍}IvDyèн©?ε®õ.;
-18 bytes thanks to @ExpiredData.
-13 bytes by using the same extend to size 7 from @Maltysen's Pyth answer.
Try it online or verify some more test cases.
Explanation:
.•Mñ&Àû«ì{₆v*Å+µ-• # Push compressed string "e dg bcmp fhvw k jx qz"
# # Split on spaces: ["e","dg","bcmp","fhvw","k","","","jx","","qz"]
ðš # Prepend a space to this list
ε7∍} # Extend each string to size 7:
# [" ","eeeeeee","dgdgdgd","bcmpbcm","fhvwfhv","kkkkkkk","","","jxjxjxj","","qzqzqzq"]
Iv # Loop `y` over the input-list:
Dyè # Get the `y`'th string from a copy of the list
н # Get it's first character
©? # Store it in the register, and print it without trailing newline
ε # Then map each string in the list to:
®õ.; # Remove the first occurrence of the character from the register
See this 05AB1E tip of mine (section How to compress strings not part of the dictionary?) to understand why .•Mñ&Àû«ì{₆v*Å+µ-•
is "e dg bcmp fhvw k jx qz"
.
$endgroup$
$begingroup$
Can't you use" 0eeeeeee0ddddggg0bbccmmp0ffhhvvw0k000jx00qz"
?
$endgroup$
– Expired Data
12 hours ago
$begingroup$
@ExpiredData Ah, of course. You only draw 7 letter.. Thanks! Will change it.
$endgroup$
– Kevin Cruijssen
12 hours ago
add a comment |
$begingroup$
C# (Visual C# Interactive Compiler), 104 90 bytes
a=>a.OrderBy(x=>x).Select((x,i)=>(x="_ E DG BCMP FHVW K JX QZ".Split()[x])[i%x.Length])
Try it online!
$endgroup$
add a comment |
$begingroup$
C (gcc), 110 bytes
_={0,7,14,21,0,0,22,0,24};f(char*s){for(;*s+1;s++)*s=*s?*s-1?"DDDDGGGBBCCMMPFFHHVVWKJXQZ"[_[*s-2]++]:69:32;}
Try it online!
Uses the _
array as an index into the static string "DDDDGGGBBCCMMPFFHHVVWKJXQZ"
dynamically with exceptions for 0 and 1.
Argument is a -1
-terminated array of scores which is transformed in-place into a -1
-terminated string.
$endgroup$
add a comment |
$begingroup$
Jelly, 34 32 bytes
“¿RÇĊƈ⁸⁾%ỵṆþœsṀṂ’ṃØAṣ”A;⁶ẋ€7⁸ịḢ€
Try it online!
I hadn’t seen there was a shorter Jelly answer when I wrote this, and this uses a different approach so I thought was worth posting as well.
Thanks to @JonathanAllan for saving 2 bytes!
$endgroup$
$begingroup$
By using base-decompression,ṃ
, you can save 2 bytes
$endgroup$
– Jonathan Allan
4 hours ago
add a comment |
$begingroup$
Python 3, 178 142 135 127 112 117 bytes
def f(l):
d=list(map(list," _EEEEEEE_DDDDGGG_BBCCMMP_FFHHVVW_K___JX__QZ".split('_')))
return[d[i].pop()for i in l]
Try it online!
-1 byte thanks to cdlane
correct thanks to mathmandan
$endgroup$
$begingroup$
in " -> in" for 111
$endgroup$
– cdlane
3 hours ago
$begingroup$
d=list(map(list,"...".split('_')))
to save another byte
$endgroup$
– cdlane
3 hours ago
$begingroup$
This functionf
probably doesn't need to be named, so you can save 2 bytes. However,f
consumes the entries ofd
, so I'm not sure that it fits the consensus requirement that "the function has to be reusable arbitrarily often, without...restating...any other code accompanying the submission." (For example, runningf([10,0,10,5,8,8,0])
more than once would result in an error.) Please see meta discussion here: codegolf.meta.stackexchange.com/a/7615/36885
$endgroup$
– mathmandan
3 hours ago
add a comment |
$begingroup$
PHP, 114 bytes
function($a){$b=[' ',E,DG,BCMP,FHVW,K,8=>JX,0,QZ];foreach($a as$t)$b[$t]=substr($d=$b[$t],1).$c=$d[0];return$c;}
Try it online!
Uses a similar rotation/cycling method as some of the others.
Output
[10,0,10,5,8,8,0] "Q ZKJX "
[1,1,1,1,1,1,1] "EEEEEEE"
[1,2,3,4,5,8,0] "EDBFKJ "
[2,2,2,2,2,2,2] "DGDGDGD"
$endgroup$
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
});
});
}, "mathjax-editing");
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "200"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f182954%2fworn-tile-scrabble%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
11 Answers
11
active
oldest
votes
11 Answers
11
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
Charcoal, 33 bytes
⭆觧⪪”&↖“Vh_z↶∕¡⌈∨₂χ¹‖◨⌊″”¶ι№…θκι
Try it online! Link is to verbose version of code. Explanation:
θ Input array
⭆ Map over elements and join
”...” Literal string " nEnDGnBCMPnFHVWnKnnnJXnnQZ"
⪪ ¶ Split on newlines
§ ι Indexed by current element
§ Cyclically indexed by
№…θκι Number of times current element has already appeared
Implcitly print
$endgroup$
add a comment |
$begingroup$
Charcoal, 33 bytes
⭆觧⪪”&↖“Vh_z↶∕¡⌈∨₂χ¹‖◨⌊″”¶ι№…θκι
Try it online! Link is to verbose version of code. Explanation:
θ Input array
⭆ Map over elements and join
”...” Literal string " nEnDGnBCMPnFHVWnKnnnJXnnQZ"
⪪ ¶ Split on newlines
§ ι Indexed by current element
§ Cyclically indexed by
№…θκι Number of times current element has already appeared
Implcitly print
$endgroup$
add a comment |
$begingroup$
Charcoal, 33 bytes
⭆觧⪪”&↖“Vh_z↶∕¡⌈∨₂χ¹‖◨⌊″”¶ι№…θκι
Try it online! Link is to verbose version of code. Explanation:
θ Input array
⭆ Map over elements and join
”...” Literal string " nEnDGnBCMPnFHVWnKnnnJXnnQZ"
⪪ ¶ Split on newlines
§ ι Indexed by current element
§ Cyclically indexed by
№…θκι Number of times current element has already appeared
Implcitly print
$endgroup$
Charcoal, 33 bytes
⭆觧⪪”&↖“Vh_z↶∕¡⌈∨₂χ¹‖◨⌊″”¶ι№…θκι
Try it online! Link is to verbose version of code. Explanation:
θ Input array
⭆ Map over elements and join
”...” Literal string " nEnDGnBCMPnFHVWnKnnnJXnnQZ"
⪪ ¶ Split on newlines
§ ι Indexed by current element
§ Cyclically indexed by
№…θκι Number of times current element has already appeared
Implcitly print
answered 12 hours ago
NeilNeil
82.7k745179
82.7k745179
add a comment |
add a comment |
$begingroup$
JavaScript (ES6), 137 ... 84 78 77 76 bytes
Saved 10 bytes by using Neil's cycling method
Returns a list of tiles. Uses _
for blank tiles.
a=>a.map(o=n=>"____FHVWGDGD_K__BCMPEEEE_ZQ__XJ"[n*20%44%32+(o[n]=-~o[n])%4])
Try it online!
How?
For each number of points, we cycle through a group of exactly 4 tiles, starting with the second tile of each group (this is important for G
vs D
):
points | group | max. sequence
--------+-------+---------------
0 | ____ | __
1 | EEEE | EEEEEEE
2 | GDGD | DGDGDGD
3 | BCMP | CMPBCMP
4 | FHVW | HVWFHVW
5 | _K__ | K
8 | _XJ_ | XJ }--- these letters may only appear once each
10 | _ZQ_ | ZQ /
All these groups are stored as a single string of 31 characters:
____FHVWGDGD_K__BCMPEEEE_ZQ__XJ
^ ^ ^ ^ ^ ^ ^ ^
0 4 8 12 16 20 24 28
NB: We don't need to store the final "_"
in "_XJ_"
, as it will never be accessed anyway.
The number of points $n$ is converted to the correct index $i_n$ into this string with:
$$i_n=((20times n)bmod 44)bmod 32$$
n | *20 | mod 44 | mod 32 | group
----+-----+--------+--------+-------
0 | 0 | 0 | 0 | ____
1 | 20 | 20 | 20 | EEEE
2 | 40 | 40 | 8 | GDGD
3 | 60 | 16 | 16 | BCMP
4 | 80 | 36 | 4 | FHVW
5 | 100 | 12 | 12 | _K__
8 | 160 | 28 | 28 | _XJ_
10 | 200 | 24 | 24 | _ZQ_
The current position in each group is stored in the object $o$.
$endgroup$
$begingroup$
Advancing o[n] by 8 each time would cost one extra character for the advancement, but allow one to replace %4 and %32 both with &31 for a net win. My best, based on yours, would bea=>a.map(o=n=>('?ED?BWQ?_EG?CFZ?_EDJMH?K?EGXPV'[n*9.4+(o[n]=7-~o[n])&31]))
. A shorter, "almost" version isa=>a.map(o=n=>("_EDBFK_EDCHJQEGMVXZEGPW"[n+(o[n]=5-~o[n])%24]))
but that approach would needs a compact way to map the values 8 and 10 into 11 and 12, plus a slight adjustment to the string to fix an off-by-one problem.
$endgroup$
– supercat
2 hours ago
$begingroup$
@supercat Sounds good! I'll have a closer look at it tomorrow.
$endgroup$
– Arnauld
2 hours ago
add a comment |
$begingroup$
JavaScript (ES6), 137 ... 84 78 77 76 bytes
Saved 10 bytes by using Neil's cycling method
Returns a list of tiles. Uses _
for blank tiles.
a=>a.map(o=n=>"____FHVWGDGD_K__BCMPEEEE_ZQ__XJ"[n*20%44%32+(o[n]=-~o[n])%4])
Try it online!
How?
For each number of points, we cycle through a group of exactly 4 tiles, starting with the second tile of each group (this is important for G
vs D
):
points | group | max. sequence
--------+-------+---------------
0 | ____ | __
1 | EEEE | EEEEEEE
2 | GDGD | DGDGDGD
3 | BCMP | CMPBCMP
4 | FHVW | HVWFHVW
5 | _K__ | K
8 | _XJ_ | XJ }--- these letters may only appear once each
10 | _ZQ_ | ZQ /
All these groups are stored as a single string of 31 characters:
____FHVWGDGD_K__BCMPEEEE_ZQ__XJ
^ ^ ^ ^ ^ ^ ^ ^
0 4 8 12 16 20 24 28
NB: We don't need to store the final "_"
in "_XJ_"
, as it will never be accessed anyway.
The number of points $n$ is converted to the correct index $i_n$ into this string with:
$$i_n=((20times n)bmod 44)bmod 32$$
n | *20 | mod 44 | mod 32 | group
----+-----+--------+--------+-------
0 | 0 | 0 | 0 | ____
1 | 20 | 20 | 20 | EEEE
2 | 40 | 40 | 8 | GDGD
3 | 60 | 16 | 16 | BCMP
4 | 80 | 36 | 4 | FHVW
5 | 100 | 12 | 12 | _K__
8 | 160 | 28 | 28 | _XJ_
10 | 200 | 24 | 24 | _ZQ_
The current position in each group is stored in the object $o$.
$endgroup$
$begingroup$
Advancing o[n] by 8 each time would cost one extra character for the advancement, but allow one to replace %4 and %32 both with &31 for a net win. My best, based on yours, would bea=>a.map(o=n=>('?ED?BWQ?_EG?CFZ?_EDJMH?K?EGXPV'[n*9.4+(o[n]=7-~o[n])&31]))
. A shorter, "almost" version isa=>a.map(o=n=>("_EDBFK_EDCHJQEGMVXZEGPW"[n+(o[n]=5-~o[n])%24]))
but that approach would needs a compact way to map the values 8 and 10 into 11 and 12, plus a slight adjustment to the string to fix an off-by-one problem.
$endgroup$
– supercat
2 hours ago
$begingroup$
@supercat Sounds good! I'll have a closer look at it tomorrow.
$endgroup$
– Arnauld
2 hours ago
add a comment |
$begingroup$
JavaScript (ES6), 137 ... 84 78 77 76 bytes
Saved 10 bytes by using Neil's cycling method
Returns a list of tiles. Uses _
for blank tiles.
a=>a.map(o=n=>"____FHVWGDGD_K__BCMPEEEE_ZQ__XJ"[n*20%44%32+(o[n]=-~o[n])%4])
Try it online!
How?
For each number of points, we cycle through a group of exactly 4 tiles, starting with the second tile of each group (this is important for G
vs D
):
points | group | max. sequence
--------+-------+---------------
0 | ____ | __
1 | EEEE | EEEEEEE
2 | GDGD | DGDGDGD
3 | BCMP | CMPBCMP
4 | FHVW | HVWFHVW
5 | _K__ | K
8 | _XJ_ | XJ }--- these letters may only appear once each
10 | _ZQ_ | ZQ /
All these groups are stored as a single string of 31 characters:
____FHVWGDGD_K__BCMPEEEE_ZQ__XJ
^ ^ ^ ^ ^ ^ ^ ^
0 4 8 12 16 20 24 28
NB: We don't need to store the final "_"
in "_XJ_"
, as it will never be accessed anyway.
The number of points $n$ is converted to the correct index $i_n$ into this string with:
$$i_n=((20times n)bmod 44)bmod 32$$
n | *20 | mod 44 | mod 32 | group
----+-----+--------+--------+-------
0 | 0 | 0 | 0 | ____
1 | 20 | 20 | 20 | EEEE
2 | 40 | 40 | 8 | GDGD
3 | 60 | 16 | 16 | BCMP
4 | 80 | 36 | 4 | FHVW
5 | 100 | 12 | 12 | _K__
8 | 160 | 28 | 28 | _XJ_
10 | 200 | 24 | 24 | _ZQ_
The current position in each group is stored in the object $o$.
$endgroup$
JavaScript (ES6), 137 ... 84 78 77 76 bytes
Saved 10 bytes by using Neil's cycling method
Returns a list of tiles. Uses _
for blank tiles.
a=>a.map(o=n=>"____FHVWGDGD_K__BCMPEEEE_ZQ__XJ"[n*20%44%32+(o[n]=-~o[n])%4])
Try it online!
How?
For each number of points, we cycle through a group of exactly 4 tiles, starting with the second tile of each group (this is important for G
vs D
):
points | group | max. sequence
--------+-------+---------------
0 | ____ | __
1 | EEEE | EEEEEEE
2 | GDGD | DGDGDGD
3 | BCMP | CMPBCMP
4 | FHVW | HVWFHVW
5 | _K__ | K
8 | _XJ_ | XJ }--- these letters may only appear once each
10 | _ZQ_ | ZQ /
All these groups are stored as a single string of 31 characters:
____FHVWGDGD_K__BCMPEEEE_ZQ__XJ
^ ^ ^ ^ ^ ^ ^ ^
0 4 8 12 16 20 24 28
NB: We don't need to store the final "_"
in "_XJ_"
, as it will never be accessed anyway.
The number of points $n$ is converted to the correct index $i_n$ into this string with:
$$i_n=((20times n)bmod 44)bmod 32$$
n | *20 | mod 44 | mod 32 | group
----+-----+--------+--------+-------
0 | 0 | 0 | 0 | ____
1 | 20 | 20 | 20 | EEEE
2 | 40 | 40 | 8 | GDGD
3 | 60 | 16 | 16 | BCMP
4 | 80 | 36 | 4 | FHVW
5 | 100 | 12 | 12 | _K__
8 | 160 | 28 | 28 | _XJ_
10 | 200 | 24 | 24 | _ZQ_
The current position in each group is stored in the object $o$.
edited 10 hours ago
answered 13 hours ago
ArnauldArnauld
80.7k797334
80.7k797334
$begingroup$
Advancing o[n] by 8 each time would cost one extra character for the advancement, but allow one to replace %4 and %32 both with &31 for a net win. My best, based on yours, would bea=>a.map(o=n=>('?ED?BWQ?_EG?CFZ?_EDJMH?K?EGXPV'[n*9.4+(o[n]=7-~o[n])&31]))
. A shorter, "almost" version isa=>a.map(o=n=>("_EDBFK_EDCHJQEGMVXZEGPW"[n+(o[n]=5-~o[n])%24]))
but that approach would needs a compact way to map the values 8 and 10 into 11 and 12, plus a slight adjustment to the string to fix an off-by-one problem.
$endgroup$
– supercat
2 hours ago
$begingroup$
@supercat Sounds good! I'll have a closer look at it tomorrow.
$endgroup$
– Arnauld
2 hours ago
add a comment |
$begingroup$
Advancing o[n] by 8 each time would cost one extra character for the advancement, but allow one to replace %4 and %32 both with &31 for a net win. My best, based on yours, would bea=>a.map(o=n=>('?ED?BWQ?_EG?CFZ?_EDJMH?K?EGXPV'[n*9.4+(o[n]=7-~o[n])&31]))
. A shorter, "almost" version isa=>a.map(o=n=>("_EDBFK_EDCHJQEGMVXZEGPW"[n+(o[n]=5-~o[n])%24]))
but that approach would needs a compact way to map the values 8 and 10 into 11 and 12, plus a slight adjustment to the string to fix an off-by-one problem.
$endgroup$
– supercat
2 hours ago
$begingroup$
@supercat Sounds good! I'll have a closer look at it tomorrow.
$endgroup$
– Arnauld
2 hours ago
$begingroup$
Advancing o[n] by 8 each time would cost one extra character for the advancement, but allow one to replace %4 and %32 both with &31 for a net win. My best, based on yours, would be
a=>a.map(o=n=>('?ED?BWQ?_EG?CFZ?_EDJMH?K?EGXPV'[n*9.4+(o[n]=7-~o[n])&31]))
. A shorter, "almost" version is a=>a.map(o=n=>("_EDBFK_EDCHJQEGMVXZEGPW"[n+(o[n]=5-~o[n])%24]))
but that approach would needs a compact way to map the values 8 and 10 into 11 and 12, plus a slight adjustment to the string to fix an off-by-one problem.$endgroup$
– supercat
2 hours ago
$begingroup$
Advancing o[n] by 8 each time would cost one extra character for the advancement, but allow one to replace %4 and %32 both with &31 for a net win. My best, based on yours, would be
a=>a.map(o=n=>('?ED?BWQ?_EG?CFZ?_EDJMH?K?EGXPV'[n*9.4+(o[n]=7-~o[n])&31]))
. A shorter, "almost" version is a=>a.map(o=n=>("_EDBFK_EDCHJQEGMVXZEGPW"[n+(o[n]=5-~o[n])%24]))
but that approach would needs a compact way to map the values 8 and 10 into 11 and 12, plus a slight adjustment to the string to fix an off-by-one problem.$endgroup$
– supercat
2 hours ago
$begingroup$
@supercat Sounds good! I'll have a closer look at it tomorrow.
$endgroup$
– Arnauld
2 hours ago
$begingroup$
@supercat Sounds good! I'll have a closer look at it tomorrow.
$endgroup$
– Arnauld
2 hours ago
add a comment |
$begingroup$
Pyth - 92 86 83 81 80 75 60 52 49 42 36 bytes
Loops through input, popping off the available letters. I just have one of each letter that together give 7 for that point category. Now using packed string encoding.
K[M*L7c."B_êº çÑOÒ
7âCkÑ"Lm.)@K
K Assign to K
[M Map list(for popping). Uses a quirk of M to splat each first
*L7 Map repeating each string by 7
c L Split on occurrences of 'L'
."..." Packed string encoding of the needed letters
m (Q) Map on input (input is taken implicitly)
.) Pop. This returns the first element after removing it
@K Index into K
(d) The loop variable is given implicitly
Btw, this is the original letter string before encoding: "_ E DG BCMP FHVW K JX QZ"
.
Try it online.
$endgroup$
add a comment |
$begingroup$
Pyth - 92 86 83 81 80 75 60 52 49 42 36 bytes
Loops through input, popping off the available letters. I just have one of each letter that together give 7 for that point category. Now using packed string encoding.
K[M*L7c."B_êº çÑOÒ
7âCkÑ"Lm.)@K
K Assign to K
[M Map list(for popping). Uses a quirk of M to splat each first
*L7 Map repeating each string by 7
c L Split on occurrences of 'L'
."..." Packed string encoding of the needed letters
m (Q) Map on input (input is taken implicitly)
.) Pop. This returns the first element after removing it
@K Index into K
(d) The loop variable is given implicitly
Btw, this is the original letter string before encoding: "_ E DG BCMP FHVW K JX QZ"
.
Try it online.
$endgroup$
add a comment |
$begingroup$
Pyth - 92 86 83 81 80 75 60 52 49 42 36 bytes
Loops through input, popping off the available letters. I just have one of each letter that together give 7 for that point category. Now using packed string encoding.
K[M*L7c."B_êº çÑOÒ
7âCkÑ"Lm.)@K
K Assign to K
[M Map list(for popping). Uses a quirk of M to splat each first
*L7 Map repeating each string by 7
c L Split on occurrences of 'L'
."..." Packed string encoding of the needed letters
m (Q) Map on input (input is taken implicitly)
.) Pop. This returns the first element after removing it
@K Index into K
(d) The loop variable is given implicitly
Btw, this is the original letter string before encoding: "_ E DG BCMP FHVW K JX QZ"
.
Try it online.
$endgroup$
Pyth - 92 86 83 81 80 75 60 52 49 42 36 bytes
Loops through input, popping off the available letters. I just have one of each letter that together give 7 for that point category. Now using packed string encoding.
K[M*L7c."B_êº çÑOÒ
7âCkÑ"Lm.)@K
K Assign to K
[M Map list(for popping). Uses a quirk of M to splat each first
*L7 Map repeating each string by 7
c L Split on occurrences of 'L'
."..." Packed string encoding of the needed letters
m (Q) Map on input (input is taken implicitly)
.) Pop. This returns the first element after removing it
@K Index into K
(d) The loop variable is given implicitly
Btw, this is the original letter string before encoding: "_ E DG BCMP FHVW K JX QZ"
.
Try it online.
edited 12 hours ago
answered 13 hours ago
MaltysenMaltysen
21.3k445116
21.3k445116
add a comment |
add a comment |
$begingroup$
Perl 5, 71 bytes
@a=(__,'E'x7,DDDDGGG,BBCCMMP,FFHHVVW,K,1,1,JX,1,QZ);say chop$a[$_]for<>
Try it online!
$endgroup$
add a comment |
$begingroup$
Perl 5, 71 bytes
@a=(__,'E'x7,DDDDGGG,BBCCMMP,FFHHVVW,K,1,1,JX,1,QZ);say chop$a[$_]for<>
Try it online!
$endgroup$
add a comment |
$begingroup$
Perl 5, 71 bytes
@a=(__,'E'x7,DDDDGGG,BBCCMMP,FFHHVVW,K,1,1,JX,1,QZ);say chop$a[$_]for<>
Try it online!
$endgroup$
Perl 5, 71 bytes
@a=(__,'E'x7,DDDDGGG,BBCCMMP,FFHHVVW,K,1,1,JX,1,QZ);say chop$a[$_]for<>
Try it online!
answered 9 hours ago
XcaliXcali
5,505520
5,505520
add a comment |
add a comment |
$begingroup$
Jelly, 31 30 27 bytes
“ÑṠX(YḤO⁻©Ɓḣ’ṃØA;⁶s2ɓṢĖUœị
A monadic Link accepting a list of integers which yields a list of characters.
- a mishmash of my previous, below, and my improvement of Nick Kennedy's
Try it online!
The output is not given in the same order as the input (this is allowed).
Using 2 of my own additions to the language in an answer does not happen often! (ṃ
and ɓ
here).
How?
“...’ṃØA;⁶s2ɓṢĖUœị - Link: list of integers, V e.g. [10,1,0,3,2,1,10]
“...’ - 4249912893109453671990223738
ØA - 'ABC...XYZ'
ṃ - base decompress 'ENDGMPFYKKZZZZJXZZQZ'
; - concatenate
⁶ - a space 'ENDGMPFYKKZZZZJXZZQZ '
s2 - split into twos ['EN','DG','MP','FY','KK','ZZ','ZZ','JX','ZZ','QZ',' ']
ɓ - start a new dyadic chain with swapped arguments - i.e. f(V,that)
Ṣ - sort [0,1,1,2,3,10,10]
Ė - enumerate [[1,0],[2,1],[3,1],[4,2],[5,3],[6,10],[7,10]]
U - upend [[0,1],[1,2],[1,3],[2,4],[3,5],[10,6],[10,7]]
œị - multi-dimensional index into ' NWGMZQ'
(1-based and modular)
previous @ 30
“²rṛʂṂø5=Ɓṇ^N¥Y»⁾tky;⁶s2ɓṢĖUœị
A monadic Link accepting a list of integers which yields a list of characters.
Try it online!
This one's output is also mixed-case (this is allowed).
How?
“...»⁾tky;⁶s2ɓṢĖUœị - Link: list of integers, V e.g. [10,1,0,3,2,1,10]
“...» - compression of dictionary entries:
- 'end', 'GMP', 'fyttes', 'adj', and 'xci' and the string 'qz'
- 'endGMPfyttesadjxciqz'
y - translate with:
⁾tk - ['t', 'k'] 'endGMPfykkesadjxciqz'
;⁶s2ɓṢĖUœị - ...
- ...then like the above method ' neGMzq'
$endgroup$
add a comment |
$begingroup$
Jelly, 31 30 27 bytes
“ÑṠX(YḤO⁻©Ɓḣ’ṃØA;⁶s2ɓṢĖUœị
A monadic Link accepting a list of integers which yields a list of characters.
- a mishmash of my previous, below, and my improvement of Nick Kennedy's
Try it online!
The output is not given in the same order as the input (this is allowed).
Using 2 of my own additions to the language in an answer does not happen often! (ṃ
and ɓ
here).
How?
“...’ṃØA;⁶s2ɓṢĖUœị - Link: list of integers, V e.g. [10,1,0,3,2,1,10]
“...’ - 4249912893109453671990223738
ØA - 'ABC...XYZ'
ṃ - base decompress 'ENDGMPFYKKZZZZJXZZQZ'
; - concatenate
⁶ - a space 'ENDGMPFYKKZZZZJXZZQZ '
s2 - split into twos ['EN','DG','MP','FY','KK','ZZ','ZZ','JX','ZZ','QZ',' ']
ɓ - start a new dyadic chain with swapped arguments - i.e. f(V,that)
Ṣ - sort [0,1,1,2,3,10,10]
Ė - enumerate [[1,0],[2,1],[3,1],[4,2],[5,3],[6,10],[7,10]]
U - upend [[0,1],[1,2],[1,3],[2,4],[3,5],[10,6],[10,7]]
œị - multi-dimensional index into ' NWGMZQ'
(1-based and modular)
previous @ 30
“²rṛʂṂø5=Ɓṇ^N¥Y»⁾tky;⁶s2ɓṢĖUœị
A monadic Link accepting a list of integers which yields a list of characters.
Try it online!
This one's output is also mixed-case (this is allowed).
How?
“...»⁾tky;⁶s2ɓṢĖUœị - Link: list of integers, V e.g. [10,1,0,3,2,1,10]
“...» - compression of dictionary entries:
- 'end', 'GMP', 'fyttes', 'adj', and 'xci' and the string 'qz'
- 'endGMPfyttesadjxciqz'
y - translate with:
⁾tk - ['t', 'k'] 'endGMPfykkesadjxciqz'
;⁶s2ɓṢĖUœị - ...
- ...then like the above method ' neGMzq'
$endgroup$
add a comment |
$begingroup$
Jelly, 31 30 27 bytes
“ÑṠX(YḤO⁻©Ɓḣ’ṃØA;⁶s2ɓṢĖUœị
A monadic Link accepting a list of integers which yields a list of characters.
- a mishmash of my previous, below, and my improvement of Nick Kennedy's
Try it online!
The output is not given in the same order as the input (this is allowed).
Using 2 of my own additions to the language in an answer does not happen often! (ṃ
and ɓ
here).
How?
“...’ṃØA;⁶s2ɓṢĖUœị - Link: list of integers, V e.g. [10,1,0,3,2,1,10]
“...’ - 4249912893109453671990223738
ØA - 'ABC...XYZ'
ṃ - base decompress 'ENDGMPFYKKZZZZJXZZQZ'
; - concatenate
⁶ - a space 'ENDGMPFYKKZZZZJXZZQZ '
s2 - split into twos ['EN','DG','MP','FY','KK','ZZ','ZZ','JX','ZZ','QZ',' ']
ɓ - start a new dyadic chain with swapped arguments - i.e. f(V,that)
Ṣ - sort [0,1,1,2,3,10,10]
Ė - enumerate [[1,0],[2,1],[3,1],[4,2],[5,3],[6,10],[7,10]]
U - upend [[0,1],[1,2],[1,3],[2,4],[3,5],[10,6],[10,7]]
œị - multi-dimensional index into ' NWGMZQ'
(1-based and modular)
previous @ 30
“²rṛʂṂø5=Ɓṇ^N¥Y»⁾tky;⁶s2ɓṢĖUœị
A monadic Link accepting a list of integers which yields a list of characters.
Try it online!
This one's output is also mixed-case (this is allowed).
How?
“...»⁾tky;⁶s2ɓṢĖUœị - Link: list of integers, V e.g. [10,1,0,3,2,1,10]
“...» - compression of dictionary entries:
- 'end', 'GMP', 'fyttes', 'adj', and 'xci' and the string 'qz'
- 'endGMPfyttesadjxciqz'
y - translate with:
⁾tk - ['t', 'k'] 'endGMPfykkesadjxciqz'
;⁶s2ɓṢĖUœị - ...
- ...then like the above method ' neGMzq'
$endgroup$
Jelly, 31 30 27 bytes
“ÑṠX(YḤO⁻©Ɓḣ’ṃØA;⁶s2ɓṢĖUœị
A monadic Link accepting a list of integers which yields a list of characters.
- a mishmash of my previous, below, and my improvement of Nick Kennedy's
Try it online!
The output is not given in the same order as the input (this is allowed).
Using 2 of my own additions to the language in an answer does not happen often! (ṃ
and ɓ
here).
How?
“...’ṃØA;⁶s2ɓṢĖUœị - Link: list of integers, V e.g. [10,1,0,3,2,1,10]
“...’ - 4249912893109453671990223738
ØA - 'ABC...XYZ'
ṃ - base decompress 'ENDGMPFYKKZZZZJXZZQZ'
; - concatenate
⁶ - a space 'ENDGMPFYKKZZZZJXZZQZ '
s2 - split into twos ['EN','DG','MP','FY','KK','ZZ','ZZ','JX','ZZ','QZ',' ']
ɓ - start a new dyadic chain with swapped arguments - i.e. f(V,that)
Ṣ - sort [0,1,1,2,3,10,10]
Ė - enumerate [[1,0],[2,1],[3,1],[4,2],[5,3],[6,10],[7,10]]
U - upend [[0,1],[1,2],[1,3],[2,4],[3,5],[10,6],[10,7]]
œị - multi-dimensional index into ' NWGMZQ'
(1-based and modular)
previous @ 30
“²rṛʂṂø5=Ɓṇ^N¥Y»⁾tky;⁶s2ɓṢĖUœị
A monadic Link accepting a list of integers which yields a list of characters.
Try it online!
This one's output is also mixed-case (this is allowed).
How?
“...»⁾tky;⁶s2ɓṢĖUœị - Link: list of integers, V e.g. [10,1,0,3,2,1,10]
“...» - compression of dictionary entries:
- 'end', 'GMP', 'fyttes', 'adj', and 'xci' and the string 'qz'
- 'endGMPfyttesadjxciqz'
y - translate with:
⁾tk - ['t', 'k'] 'endGMPfykkesadjxciqz'
;⁶s2ɓṢĖUœị - ...
- ...then like the above method ' neGMzq'
edited 3 hours ago
answered 6 hours ago
Jonathan AllanJonathan Allan
54.1k537174
54.1k537174
add a comment |
add a comment |
$begingroup$
05AB1E, 70 52 39 38 bytes
.•Mñ&Àû«ì{₆v*Å+µ-•#ðšε7∍}IvDyèн©?ε®õ.;
-18 bytes thanks to @ExpiredData.
-13 bytes by using the same extend to size 7 from @Maltysen's Pyth answer.
Try it online or verify some more test cases.
Explanation:
.•Mñ&Àû«ì{₆v*Å+µ-• # Push compressed string "e dg bcmp fhvw k jx qz"
# # Split on spaces: ["e","dg","bcmp","fhvw","k","","","jx","","qz"]
ðš # Prepend a space to this list
ε7∍} # Extend each string to size 7:
# [" ","eeeeeee","dgdgdgd","bcmpbcm","fhvwfhv","kkkkkkk","","","jxjxjxj","","qzqzqzq"]
Iv # Loop `y` over the input-list:
Dyè # Get the `y`'th string from a copy of the list
н # Get it's first character
©? # Store it in the register, and print it without trailing newline
ε # Then map each string in the list to:
®õ.; # Remove the first occurrence of the character from the register
See this 05AB1E tip of mine (section How to compress strings not part of the dictionary?) to understand why .•Mñ&Àû«ì{₆v*Å+µ-•
is "e dg bcmp fhvw k jx qz"
.
$endgroup$
$begingroup$
Can't you use" 0eeeeeee0ddddggg0bbccmmp0ffhhvvw0k000jx00qz"
?
$endgroup$
– Expired Data
12 hours ago
$begingroup$
@ExpiredData Ah, of course. You only draw 7 letter.. Thanks! Will change it.
$endgroup$
– Kevin Cruijssen
12 hours ago
add a comment |
$begingroup$
05AB1E, 70 52 39 38 bytes
.•Mñ&Àû«ì{₆v*Å+µ-•#ðšε7∍}IvDyèн©?ε®õ.;
-18 bytes thanks to @ExpiredData.
-13 bytes by using the same extend to size 7 from @Maltysen's Pyth answer.
Try it online or verify some more test cases.
Explanation:
.•Mñ&Àû«ì{₆v*Å+µ-• # Push compressed string "e dg bcmp fhvw k jx qz"
# # Split on spaces: ["e","dg","bcmp","fhvw","k","","","jx","","qz"]
ðš # Prepend a space to this list
ε7∍} # Extend each string to size 7:
# [" ","eeeeeee","dgdgdgd","bcmpbcm","fhvwfhv","kkkkkkk","","","jxjxjxj","","qzqzqzq"]
Iv # Loop `y` over the input-list:
Dyè # Get the `y`'th string from a copy of the list
н # Get it's first character
©? # Store it in the register, and print it without trailing newline
ε # Then map each string in the list to:
®õ.; # Remove the first occurrence of the character from the register
See this 05AB1E tip of mine (section How to compress strings not part of the dictionary?) to understand why .•Mñ&Àû«ì{₆v*Å+µ-•
is "e dg bcmp fhvw k jx qz"
.
$endgroup$
$begingroup$
Can't you use" 0eeeeeee0ddddggg0bbccmmp0ffhhvvw0k000jx00qz"
?
$endgroup$
– Expired Data
12 hours ago
$begingroup$
@ExpiredData Ah, of course. You only draw 7 letter.. Thanks! Will change it.
$endgroup$
– Kevin Cruijssen
12 hours ago
add a comment |
$begingroup$
05AB1E, 70 52 39 38 bytes
.•Mñ&Àû«ì{₆v*Å+µ-•#ðšε7∍}IvDyèн©?ε®õ.;
-18 bytes thanks to @ExpiredData.
-13 bytes by using the same extend to size 7 from @Maltysen's Pyth answer.
Try it online or verify some more test cases.
Explanation:
.•Mñ&Àû«ì{₆v*Å+µ-• # Push compressed string "e dg bcmp fhvw k jx qz"
# # Split on spaces: ["e","dg","bcmp","fhvw","k","","","jx","","qz"]
ðš # Prepend a space to this list
ε7∍} # Extend each string to size 7:
# [" ","eeeeeee","dgdgdgd","bcmpbcm","fhvwfhv","kkkkkkk","","","jxjxjxj","","qzqzqzq"]
Iv # Loop `y` over the input-list:
Dyè # Get the `y`'th string from a copy of the list
н # Get it's first character
©? # Store it in the register, and print it without trailing newline
ε # Then map each string in the list to:
®õ.; # Remove the first occurrence of the character from the register
See this 05AB1E tip of mine (section How to compress strings not part of the dictionary?) to understand why .•Mñ&Àû«ì{₆v*Å+µ-•
is "e dg bcmp fhvw k jx qz"
.
$endgroup$
05AB1E, 70 52 39 38 bytes
.•Mñ&Àû«ì{₆v*Å+µ-•#ðšε7∍}IvDyèн©?ε®õ.;
-18 bytes thanks to @ExpiredData.
-13 bytes by using the same extend to size 7 from @Maltysen's Pyth answer.
Try it online or verify some more test cases.
Explanation:
.•Mñ&Àû«ì{₆v*Å+µ-• # Push compressed string "e dg bcmp fhvw k jx qz"
# # Split on spaces: ["e","dg","bcmp","fhvw","k","","","jx","","qz"]
ðš # Prepend a space to this list
ε7∍} # Extend each string to size 7:
# [" ","eeeeeee","dgdgdgd","bcmpbcm","fhvwfhv","kkkkkkk","","","jxjxjxj","","qzqzqzq"]
Iv # Loop `y` over the input-list:
Dyè # Get the `y`'th string from a copy of the list
н # Get it's first character
©? # Store it in the register, and print it without trailing newline
ε # Then map each string in the list to:
®õ.; # Remove the first occurrence of the character from the register
See this 05AB1E tip of mine (section How to compress strings not part of the dictionary?) to understand why .•Mñ&Àû«ì{₆v*Å+µ-•
is "e dg bcmp fhvw k jx qz"
.
edited 8 hours ago
answered 12 hours ago
Kevin CruijssenKevin Cruijssen
42.6k571217
42.6k571217
$begingroup$
Can't you use" 0eeeeeee0ddddggg0bbccmmp0ffhhvvw0k000jx00qz"
?
$endgroup$
– Expired Data
12 hours ago
$begingroup$
@ExpiredData Ah, of course. You only draw 7 letter.. Thanks! Will change it.
$endgroup$
– Kevin Cruijssen
12 hours ago
add a comment |
$begingroup$
Can't you use" 0eeeeeee0ddddggg0bbccmmp0ffhhvvw0k000jx00qz"
?
$endgroup$
– Expired Data
12 hours ago
$begingroup$
@ExpiredData Ah, of course. You only draw 7 letter.. Thanks! Will change it.
$endgroup$
– Kevin Cruijssen
12 hours ago
$begingroup$
Can't you use
" 0eeeeeee0ddddggg0bbccmmp0ffhhvvw0k000jx00qz"
?$endgroup$
– Expired Data
12 hours ago
$begingroup$
Can't you use
" 0eeeeeee0ddddggg0bbccmmp0ffhhvvw0k000jx00qz"
?$endgroup$
– Expired Data
12 hours ago
$begingroup$
@ExpiredData Ah, of course. You only draw 7 letter.. Thanks! Will change it.
$endgroup$
– Kevin Cruijssen
12 hours ago
$begingroup$
@ExpiredData Ah, of course. You only draw 7 letter.. Thanks! Will change it.
$endgroup$
– Kevin Cruijssen
12 hours ago
add a comment |
$begingroup$
C# (Visual C# Interactive Compiler), 104 90 bytes
a=>a.OrderBy(x=>x).Select((x,i)=>(x="_ E DG BCMP FHVW K JX QZ".Split()[x])[i%x.Length])
Try it online!
$endgroup$
add a comment |
$begingroup$
C# (Visual C# Interactive Compiler), 104 90 bytes
a=>a.OrderBy(x=>x).Select((x,i)=>(x="_ E DG BCMP FHVW K JX QZ".Split()[x])[i%x.Length])
Try it online!
$endgroup$
add a comment |
$begingroup$
C# (Visual C# Interactive Compiler), 104 90 bytes
a=>a.OrderBy(x=>x).Select((x,i)=>(x="_ E DG BCMP FHVW K JX QZ".Split()[x])[i%x.Length])
Try it online!
$endgroup$
C# (Visual C# Interactive Compiler), 104 90 bytes
a=>a.OrderBy(x=>x).Select((x,i)=>(x="_ E DG BCMP FHVW K JX QZ".Split()[x])[i%x.Length])
Try it online!
edited 11 hours ago
answered 12 hours ago
Expired DataExpired Data
718116
718116
add a comment |
add a comment |
$begingroup$
C (gcc), 110 bytes
_={0,7,14,21,0,0,22,0,24};f(char*s){for(;*s+1;s++)*s=*s?*s-1?"DDDDGGGBBCCMMPFFHHVVWKJXQZ"[_[*s-2]++]:69:32;}
Try it online!
Uses the _
array as an index into the static string "DDDDGGGBBCCMMPFFHHVVWKJXQZ"
dynamically with exceptions for 0 and 1.
Argument is a -1
-terminated array of scores which is transformed in-place into a -1
-terminated string.
$endgroup$
add a comment |
$begingroup$
C (gcc), 110 bytes
_={0,7,14,21,0,0,22,0,24};f(char*s){for(;*s+1;s++)*s=*s?*s-1?"DDDDGGGBBCCMMPFFHHVVWKJXQZ"[_[*s-2]++]:69:32;}
Try it online!
Uses the _
array as an index into the static string "DDDDGGGBBCCMMPFFHHVVWKJXQZ"
dynamically with exceptions for 0 and 1.
Argument is a -1
-terminated array of scores which is transformed in-place into a -1
-terminated string.
$endgroup$
add a comment |
$begingroup$
C (gcc), 110 bytes
_={0,7,14,21,0,0,22,0,24};f(char*s){for(;*s+1;s++)*s=*s?*s-1?"DDDDGGGBBCCMMPFFHHVVWKJXQZ"[_[*s-2]++]:69:32;}
Try it online!
Uses the _
array as an index into the static string "DDDDGGGBBCCMMPFFHHVVWKJXQZ"
dynamically with exceptions for 0 and 1.
Argument is a -1
-terminated array of scores which is transformed in-place into a -1
-terminated string.
$endgroup$
C (gcc), 110 bytes
_={0,7,14,21,0,0,22,0,24};f(char*s){for(;*s+1;s++)*s=*s?*s-1?"DDDDGGGBBCCMMPFFHHVVWKJXQZ"[_[*s-2]++]:69:32;}
Try it online!
Uses the _
array as an index into the static string "DDDDGGGBBCCMMPFFHHVVWKJXQZ"
dynamically with exceptions for 0 and 1.
Argument is a -1
-terminated array of scores which is transformed in-place into a -1
-terminated string.
answered 4 hours ago
LambdaBetaLambdaBeta
2,229418
2,229418
add a comment |
add a comment |
$begingroup$
Jelly, 34 32 bytes
“¿RÇĊƈ⁸⁾%ỵṆþœsṀṂ’ṃØAṣ”A;⁶ẋ€7⁸ịḢ€
Try it online!
I hadn’t seen there was a shorter Jelly answer when I wrote this, and this uses a different approach so I thought was worth posting as well.
Thanks to @JonathanAllan for saving 2 bytes!
$endgroup$
$begingroup$
By using base-decompression,ṃ
, you can save 2 bytes
$endgroup$
– Jonathan Allan
4 hours ago
add a comment |
$begingroup$
Jelly, 34 32 bytes
“¿RÇĊƈ⁸⁾%ỵṆþœsṀṂ’ṃØAṣ”A;⁶ẋ€7⁸ịḢ€
Try it online!
I hadn’t seen there was a shorter Jelly answer when I wrote this, and this uses a different approach so I thought was worth posting as well.
Thanks to @JonathanAllan for saving 2 bytes!
$endgroup$
$begingroup$
By using base-decompression,ṃ
, you can save 2 bytes
$endgroup$
– Jonathan Allan
4 hours ago
add a comment |
$begingroup$
Jelly, 34 32 bytes
“¿RÇĊƈ⁸⁾%ỵṆþœsṀṂ’ṃØAṣ”A;⁶ẋ€7⁸ịḢ€
Try it online!
I hadn’t seen there was a shorter Jelly answer when I wrote this, and this uses a different approach so I thought was worth posting as well.
Thanks to @JonathanAllan for saving 2 bytes!
$endgroup$
Jelly, 34 32 bytes
“¿RÇĊƈ⁸⁾%ỵṆþœsṀṂ’ṃØAṣ”A;⁶ẋ€7⁸ịḢ€
Try it online!
I hadn’t seen there was a shorter Jelly answer when I wrote this, and this uses a different approach so I thought was worth posting as well.
Thanks to @JonathanAllan for saving 2 bytes!
edited 4 hours ago
answered 5 hours ago
Nick KennedyNick Kennedy
1,50649
1,50649
$begingroup$
By using base-decompression,ṃ
, you can save 2 bytes
$endgroup$
– Jonathan Allan
4 hours ago
add a comment |
$begingroup$
By using base-decompression,ṃ
, you can save 2 bytes
$endgroup$
– Jonathan Allan
4 hours ago
$begingroup$
By using base-decompression,
ṃ
, you can save 2 bytes$endgroup$
– Jonathan Allan
4 hours ago
$begingroup$
By using base-decompression,
ṃ
, you can save 2 bytes$endgroup$
– Jonathan Allan
4 hours ago
add a comment |
$begingroup$
Python 3, 178 142 135 127 112 117 bytes
def f(l):
d=list(map(list," _EEEEEEE_DDDDGGG_BBCCMMP_FFHHVVW_K___JX__QZ".split('_')))
return[d[i].pop()for i in l]
Try it online!
-1 byte thanks to cdlane
correct thanks to mathmandan
$endgroup$
$begingroup$
in " -> in" for 111
$endgroup$
– cdlane
3 hours ago
$begingroup$
d=list(map(list,"...".split('_')))
to save another byte
$endgroup$
– cdlane
3 hours ago
$begingroup$
This functionf
probably doesn't need to be named, so you can save 2 bytes. However,f
consumes the entries ofd
, so I'm not sure that it fits the consensus requirement that "the function has to be reusable arbitrarily often, without...restating...any other code accompanying the submission." (For example, runningf([10,0,10,5,8,8,0])
more than once would result in an error.) Please see meta discussion here: codegolf.meta.stackexchange.com/a/7615/36885
$endgroup$
– mathmandan
3 hours ago
add a comment |
$begingroup$
Python 3, 178 142 135 127 112 117 bytes
def f(l):
d=list(map(list," _EEEEEEE_DDDDGGG_BBCCMMP_FFHHVVW_K___JX__QZ".split('_')))
return[d[i].pop()for i in l]
Try it online!
-1 byte thanks to cdlane
correct thanks to mathmandan
$endgroup$
$begingroup$
in " -> in" for 111
$endgroup$
– cdlane
3 hours ago
$begingroup$
d=list(map(list,"...".split('_')))
to save another byte
$endgroup$
– cdlane
3 hours ago
$begingroup$
This functionf
probably doesn't need to be named, so you can save 2 bytes. However,f
consumes the entries ofd
, so I'm not sure that it fits the consensus requirement that "the function has to be reusable arbitrarily often, without...restating...any other code accompanying the submission." (For example, runningf([10,0,10,5,8,8,0])
more than once would result in an error.) Please see meta discussion here: codegolf.meta.stackexchange.com/a/7615/36885
$endgroup$
– mathmandan
3 hours ago
add a comment |
$begingroup$
Python 3, 178 142 135 127 112 117 bytes
def f(l):
d=list(map(list," _EEEEEEE_DDDDGGG_BBCCMMP_FFHHVVW_K___JX__QZ".split('_')))
return[d[i].pop()for i in l]
Try it online!
-1 byte thanks to cdlane
correct thanks to mathmandan
$endgroup$
Python 3, 178 142 135 127 112 117 bytes
def f(l):
d=list(map(list," _EEEEEEE_DDDDGGG_BBCCMMP_FFHHVVW_K___JX__QZ".split('_')))
return[d[i].pop()for i in l]
Try it online!
-1 byte thanks to cdlane
correct thanks to mathmandan
edited 3 hours ago
answered 8 hours ago
Noodle9Noodle9
30137
30137
$begingroup$
in " -> in" for 111
$endgroup$
– cdlane
3 hours ago
$begingroup$
d=list(map(list,"...".split('_')))
to save another byte
$endgroup$
– cdlane
3 hours ago
$begingroup$
This functionf
probably doesn't need to be named, so you can save 2 bytes. However,f
consumes the entries ofd
, so I'm not sure that it fits the consensus requirement that "the function has to be reusable arbitrarily often, without...restating...any other code accompanying the submission." (For example, runningf([10,0,10,5,8,8,0])
more than once would result in an error.) Please see meta discussion here: codegolf.meta.stackexchange.com/a/7615/36885
$endgroup$
– mathmandan
3 hours ago
add a comment |
$begingroup$
in " -> in" for 111
$endgroup$
– cdlane
3 hours ago
$begingroup$
d=list(map(list,"...".split('_')))
to save another byte
$endgroup$
– cdlane
3 hours ago
$begingroup$
This functionf
probably doesn't need to be named, so you can save 2 bytes. However,f
consumes the entries ofd
, so I'm not sure that it fits the consensus requirement that "the function has to be reusable arbitrarily often, without...restating...any other code accompanying the submission." (For example, runningf([10,0,10,5,8,8,0])
more than once would result in an error.) Please see meta discussion here: codegolf.meta.stackexchange.com/a/7615/36885
$endgroup$
– mathmandan
3 hours ago
$begingroup$
in " -> in" for 111
$endgroup$
– cdlane
3 hours ago
$begingroup$
in " -> in" for 111
$endgroup$
– cdlane
3 hours ago
$begingroup$
d=list(map(list,"...".split('_')))
to save another byte$endgroup$
– cdlane
3 hours ago
$begingroup$
d=list(map(list,"...".split('_')))
to save another byte$endgroup$
– cdlane
3 hours ago
$begingroup$
This function
f
probably doesn't need to be named, so you can save 2 bytes. However, f
consumes the entries of d
, so I'm not sure that it fits the consensus requirement that "the function has to be reusable arbitrarily often, without...restating...any other code accompanying the submission." (For example, running f([10,0,10,5,8,8,0])
more than once would result in an error.) Please see meta discussion here: codegolf.meta.stackexchange.com/a/7615/36885$endgroup$
– mathmandan
3 hours ago
$begingroup$
This function
f
probably doesn't need to be named, so you can save 2 bytes. However, f
consumes the entries of d
, so I'm not sure that it fits the consensus requirement that "the function has to be reusable arbitrarily often, without...restating...any other code accompanying the submission." (For example, running f([10,0,10,5,8,8,0])
more than once would result in an error.) Please see meta discussion here: codegolf.meta.stackexchange.com/a/7615/36885$endgroup$
– mathmandan
3 hours ago
add a comment |
$begingroup$
PHP, 114 bytes
function($a){$b=[' ',E,DG,BCMP,FHVW,K,8=>JX,0,QZ];foreach($a as$t)$b[$t]=substr($d=$b[$t],1).$c=$d[0];return$c;}
Try it online!
Uses a similar rotation/cycling method as some of the others.
Output
[10,0,10,5,8,8,0] "Q ZKJX "
[1,1,1,1,1,1,1] "EEEEEEE"
[1,2,3,4,5,8,0] "EDBFKJ "
[2,2,2,2,2,2,2] "DGDGDGD"
$endgroup$
add a comment |
$begingroup$
PHP, 114 bytes
function($a){$b=[' ',E,DG,BCMP,FHVW,K,8=>JX,0,QZ];foreach($a as$t)$b[$t]=substr($d=$b[$t],1).$c=$d[0];return$c;}
Try it online!
Uses a similar rotation/cycling method as some of the others.
Output
[10,0,10,5,8,8,0] "Q ZKJX "
[1,1,1,1,1,1,1] "EEEEEEE"
[1,2,3,4,5,8,0] "EDBFKJ "
[2,2,2,2,2,2,2] "DGDGDGD"
$endgroup$
add a comment |
$begingroup$
PHP, 114 bytes
function($a){$b=[' ',E,DG,BCMP,FHVW,K,8=>JX,0,QZ];foreach($a as$t)$b[$t]=substr($d=$b[$t],1).$c=$d[0];return$c;}
Try it online!
Uses a similar rotation/cycling method as some of the others.
Output
[10,0,10,5,8,8,0] "Q ZKJX "
[1,1,1,1,1,1,1] "EEEEEEE"
[1,2,3,4,5,8,0] "EDBFKJ "
[2,2,2,2,2,2,2] "DGDGDGD"
$endgroup$
PHP, 114 bytes
function($a){$b=[' ',E,DG,BCMP,FHVW,K,8=>JX,0,QZ];foreach($a as$t)$b[$t]=substr($d=$b[$t],1).$c=$d[0];return$c;}
Try it online!
Uses a similar rotation/cycling method as some of the others.
Output
[10,0,10,5,8,8,0] "Q ZKJX "
[1,1,1,1,1,1,1] "EEEEEEE"
[1,2,3,4,5,8,0] "EDBFKJ "
[2,2,2,2,2,2,2] "DGDGDGD"
edited 1 hour ago
answered 3 hours ago
gwaughgwaugh
2,0931517
2,0931517
add a comment |
add a comment |
If this is an answer to a challenge…
…Be sure to follow the challenge specification. However, please refrain from exploiting obvious loopholes. Answers abusing any of the standard loopholes are considered invalid. If you think a specification is unclear or underspecified, comment on the question instead.
…Try to optimize your score. For instance, answers to code-golf challenges should attempt to be as short as possible. You can always include a readable version of the code in addition to the competitive one.
Explanations of your answer make it more interesting to read and are very much encouraged.…Include a short header which indicates the language(s) of your code and its score, as defined by the challenge.
More generally…
…Please make sure to answer the question and provide sufficient detail.
…Avoid asking for help, clarification or responding to other answers (use comments instead).
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f182954%2fworn-tile-scrabble%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
$begingroup$
Do I need to output a string or is a list ok?
$endgroup$
– Maltysen
13 hours ago
$begingroup$
You can output a list, I'll update the question
$endgroup$
– Expired Data
13 hours ago
$begingroup$
What can I output for a blank?
$endgroup$
– Maltysen
13 hours ago
$begingroup$
Good question I'll let you output a space or _, since typically it could be represented by either. I'll update the question
$endgroup$
– Expired Data
13 hours ago
3
$begingroup$
Suggested test case:
[2,2,2,2,2,2,2]
(the only case where it's important to start with aD
rather than aG
if a cycling method is used)$endgroup$
– Arnauld
12 hours ago