{{:treffen:problemsolving:rummy.jpg?400|}}
[[https://creativecommons.org/licenses/by-sa/3.0/|CC BY-SA 3.0]] by [[https://en.wikipedia.org/wiki/Rummy#/media/File:A_Game_of_Rummy.JPG|David Lazich]]
====== 005: Colorized Rummy ======
| Series | [[treffen:codegolfing|CodeGolfings]] |
| Submission due | Sat. Nov 28th 2020 at 3pm|
| Event | Sat. Nov 28th 2020 at 4pm |
| Details | {{ :treffen:005_codegolfing_v0.2.pdf |005 CodeGolfing v0.2 [PDF]}} |
| Venue | [[https://meet.jit.si/005CodeGolfing|https://meet.jit.si/005CodeGolfing]] PW: ''v0x201'' |
| Contact | max at vspace.one |
| Difficulty | {{:treffen:problemsolving:progress2.png?nolink&160 |}} |
NOTE: Previous description: {{ :treffen:005_codegolfing.pdf |005 CodeGolfing v0.1 [PDF]}}
===== (some) Testcases =====
[
{ "in": "rkyb", "out": 0},
{ "in": "rkybky", "out": 0},
{ "in": "rkybr", "out": 1},
{ "in": "rrrkyb", "out": 1},
{ "in": "rrkkyyb", "out": 0},
{ "in": "rrkkyybb", "out": 0},
{ "in": "rrkkyy", "out": 0},
{ "in": "k", "out": 1},
{ "in": "kb", "out": 1},
{ "in": "kkbb", "out": 1}
]
===== Solutions =====
==== Ruby (>=2.7) ====
69B, max
Beschreibung: {{ :treffen:20210325_005_codegolfing_v2.pdf |005 Code Golfing Solution [pdf]}}
s=$*[0].chars.tally.values+[0,0,0].sort
exit(s[3]>=2*s[0]-s[1]-s[2])
==== Python ====
83B, chris
import sys
a,b,c,d=sorted(sys.argv[1].count(x) for x in "rybk")
1/(2*d-c<=a+b<=d*2)
==== Python ====
85B, max
import sys
c=sorted([sys.argv[1].count(x)for x in"yrbk"])
exit(c[0]<2*c[3]-c[1]-c[2])
==== Perl ====
86B, max
for(yrbk=~/./g){$r[$i++]=()=$ARGV[0]=~/$_/g}@r=sort@r;exit(@r[0]<2*@r[3]-@r[2]-@r[1])
==== Python ====
172B, m0rix
import sys
i=sys.argv[1]
l=sorted([i.count("b"),i.count("y"),i.count("r"),i.count("k")])
while l[0]!=l[3]and l[0]>=0:
l[1]-=1;l[2]-=1;l[3]-=1;l=sorted(l)
exit(l[0]!=l[3])
==== Python ====
226B, nikax
import sys
x=sys.argv[1]
y=[]
for l in ['b','y','k','r']:y+=[x.count(l)]
y.sort()
o=1
while y[0]!=0:
if y[2]
===== Tests not passed =====
==== PHP ====
105B, marc
$c[0]*2-$c[1]-$c[2]);
==== Java ====
1.7KB, alexander
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
public class Alex {
private static ConcurrentHashMap> lists = new ConcurrentHashMap<>();
private static ConcurrentHashMap chars = new ConcurrentHashMap<>();
public static void main(String[] args) {
for (char c : args[0].toCharArray()) {
if (!(c == 'r' || c == 'y' || c == 'b' || c == 'k')) return;
chars.put(chars.size(), c);
}
lists.put(0, new ArrayList<>());
lists.get(0).add(chars.get(0));
chars.remove(0);
for (int i : chars.keySet()) {
for (int j : lists.keySet()) {
if (!lists.get(j).contains(chars.get(i)) && lists.get(j).size() < 3) {
lists.get(j).add(chars.get(i));
chars.remove(i);
} else if (chars.size() >= 3 && isEverythingMin()) {
lists.put(lists.size(), new ArrayList<>());
lists.get(lists.size() - 1).add(chars.get(i));
chars.remove(i);
}
}
}
for (int k : lists.keySet()) {
for (int l : chars.keySet()) {
if (!lists.get(k).contains(chars.get(l))) {
lists.get(k).add(chars.get(l));
chars.remove(l);
}
}
}
System.out.println((chars.size() > 0 ? "Error" : "Success"));
}
private static boolean isEverythingMin() {
for(int i : lists.keySet()) {
if(lists.get(i).size() < 3) {
return false;
}
}
return true;
}
}
===== Außer Konkurrenz =====
==== Python ====
78B, chris,max
import sys
a,b,c,d=sorted(sys.argv[1].count(x) for x in"rybk")
1/(a>=2*d-b-c)
===== Preformance Award =====
**FOLGT**
~~DISCUSSION~~