def high_and_low(s, stack=[], stack2=[], t=True, f=False):
MAX_ITER_VAL = len(s)
stack.clear()
def handle_stack(stack, i = 0, t=True, f=False, neg=False, start_num=False):
if i < MAX_ITER_VAL and type(i) == type(0):
if s[i] == ",":
start_num = f
neg = f
elif s[i] == "-":
neg = t
elif s[i] == "1":
if start_num == t:
num = int("1")
if not (not neg):
num = (-1) * num
stack[-1] = 10 * stack[-1]
stack[-1] = num + stack[-1]
else:
stack.append(1)
if not (neg == f):
stack[-1] = (-1) * stack[-1]
start_num = t
elif s[i] == "2":
if start_num == t:
num = int("2")
if not (not neg):
num = (-1) * num
stack[-1] = 10 * stack[-1]
stack[-1] = num + stack[-1]
else:
stack.append(2)
if not (neg == f):
stack[-1] = (-1) * stack[-1]
start_num = t
elif s[i] == "3":
if start_num == t:
num = int("3")
if not (not neg):
num = (-1) * num
stack[-1] = 10 * stack[-1]
stack[-1] = num + stack[-1]
else:
stack.append(3)
if not (neg == f):
stack[-1] = (-1) * stack[-1]
start_num = t
elif s[i] == "4":
if start_num == t:
num = int("4")
if not (not neg):
num = (-1) * num
stack[-1] = 10 * stack[-1]
stack[-1] = num + stack[-1]
else:
stack.append(4)
if not (neg == f):
stack[-1] = (-1) * stack[-1]
start_num = t
elif s[i] == "5":
if start_num == t:
num = int("5")
if not (not neg):
num = (-1) * num
stack[-1] = 10 * stack[-1]
stack[-1] = num + stack[-1]
else:
stack.append(5)
if not (neg == f):
stack[-1] = (-1) * stack[-1]
start_num = t
elif s[i] == "6":
if start_num == t:
num = int("6")
if not (not neg):
num = (-1) * num
stack[-1] = 10 * stack[-1]
stack[-1] = num + stack[-1]
else:
stack.append(6)
if not (neg == f):
stack[-1] = (-1) * stack[-1]
start_num = t
elif s[i] == "7":
if start_num == t:
num = int("7")
if not (not neg):
num = (-1) * num
stack[-1] = 10 * stack[-1]
stack[-1] = num + stack[-1]
else:
stack.append(7)
if not (neg == f):
stack[-1] = (-1) * stack[-1]
start_num = t
elif s[i] == "8":
if start_num == t:
num = int("8")
if not (not neg):
num = (-1) * num
stack[-1] = 10 * stack[-1]
stack[-1] = num + stack[-1]
else:
stack.append(8)
if not (neg == f):
stack[-1] = (-1) * stack[-1]
start_num = t
elif s[i] == "9":
if start_num == t:
num = int("9")
if not (not neg):
num = (-1) * num
stack[-1] = 10 * stack[-1]
stack[-1] = num + stack[-1]
else:
stack.append(9)
if not (neg == f):
stack[-1] = (-1) * stack[-1]
start_num = t
elif s[i] == "0":
if start_num == t:
stack[-1] = 10 * stack[-1]
elif not (start_num == t):
raise "Uh oh"
handle_stack(stack, i + 1, t, f, neg, start_num)
else:
del i
del neg
del start_num
raise BaseException(stack)
try:
handle_stack(stack)
except BaseException as e:
stack = __import__("ast").literal_eval(str(e))
iSwappedIt = t
while iSwappedIt:
iSwappedIt = f
for i in range(1, len(stack)):
if stack[i - 1] > stack[i]:
temp = stack[i]
stack[i] = stack[i - 1]
stack[i - 1] = temp
iSwappedIt = t
small_thing = stack[0]
j = len(stack) - 1
while j > 0 or j == 0:
stack2.append(stack[j])
j = j - 1
big_thing = stack2[0]
INPUT_BUFFER = [big_thing, small_thing][::-1]
OUTPUT_STRING = []
deliminate = f
deliminator = ","
real_l = 0
for l in range(0, 3, 1):
if deliminate or not (not deliminate):
OUTPUT_STRING.append(deliminator)
elif not (deliminate == t) and not (not t):
tempo = __import__("copy").deepcopy(OUTPUT_STRING)
for ix in str(INPUT_BUFFER[real_l]):
tempo.append(chr(ord(ix)))
OUTPUT_STRING = tempo
real_l = real_l + 1
if not l:
deliminate = t
elif l:
deliminate = f
stack.clear()
stack2.clear()
return ''.join(OUTPUT_STRING)
tests = [
("1,6,2,8,3", "1,8"),
("1,8,4,9,-4,2,2", "-4,9"),
("4,7,1,8,-2", "-2,8")
]
for (i, expected) in tests:
actual = high_and_low(i)
if actual == expected:
print("high_and_low(\"{}\") == \"{}\": PASS".format(i, expected))
else:
print("high_and_low(\"{}\") == \"{}\": FAIL".format(i, expected))
print("\tActual: {}".format(actual))
ZGVmIGhpZ2hfYW5kX2xvdyhzLCBzdGFjaz1bXSwgc3RhY2syPVtdLCB0PVRydWUsIGY9RmFsc2UpOgoJTUFYX0lURVJfVkFMID0gbGVuKHMpCglzdGFjay5jbGVhcigpCgoJZGVmIGhhbmRsZV9zdGFjayhzdGFjaywgaSA9IDAsIHQ9VHJ1ZSwgZj1GYWxzZSwgbmVnPUZhbHNlLCBzdGFydF9udW09RmFsc2UpOgoJCWlmIGkgPCBNQVhfSVRFUl9WQUwgYW5kIHR5cGUoaSkgPT0gdHlwZSgwKToKCQkJaWYgc1tpXSA9PSAiLCI6CgkJCQlzdGFydF9udW0gPSBmCgkJCQluZWcgPSBmCgkJCWVsaWYgc1tpXSA9PSAiLSI6CgkJCQluZWcgPSB0CgkJCWVsaWYgc1tpXSA9PSAiMSI6CgkJCQlpZiBzdGFydF9udW0gPT0gdDoKCQkJCQludW0gPSBpbnQoIjEiKQoJCQkJCWlmIG5vdCAobm90IG5lZyk6CgkJCQkJCW51bSA9ICgtMSkgKiBudW0KCQkJCQlzdGFja1stMV0gPSAxMCAqIHN0YWNrWy0xXQoJCQkJCXN0YWNrWy0xXSA9IG51bSArIHN0YWNrWy0xXQoJCQkJZWxzZToKCQkJCQlzdGFjay5hcHBlbmQoMSkKCQkJCQlpZiBub3QgKG5lZyA9PSBmKToKCQkJCQkJc3RhY2tbLTFdID0gKC0xKSAqIHN0YWNrWy0xXQoJCQkJc3RhcnRfbnVtID0gdAoJCQllbGlmIHNbaV0gPT0gIjIiOgoJCQkJaWYgc3RhcnRfbnVtID09IHQ6CgkJCQkJbnVtID0gaW50KCIyIikKCQkJCQlpZiBub3QgKG5vdCBuZWcpOgoJCQkJCQludW0gPSAoLTEpICogbnVtCgkJCQkJc3RhY2tbLTFdID0gMTAgKiBzdGFja1stMV0KCQkJCQlzdGFja1stMV0gPSBudW0gKyBzdGFja1stMV0KCQkJCWVsc2U6CgkJCQkJc3RhY2suYXBwZW5kKDIpCgkJCQkJaWYgbm90IChuZWcgPT0gZik6CgkJCQkJCXN0YWNrWy0xXSA9ICgtMSkgKiBzdGFja1stMV0KCQkJCXN0YXJ0X251bSA9IHQKCQkJZWxpZiBzW2ldID09ICIzIjoKCQkJCWlmIHN0YXJ0X251bSA9PSB0OgoJCQkJCW51bSA9IGludCgiMyIpCgkJCQkJaWYgbm90IChub3QgbmVnKToKCQkJCQkJbnVtID0gKC0xKSAqIG51bQoJCQkJCXN0YWNrWy0xXSA9IDEwICogc3RhY2tbLTFdCgkJCQkJc3RhY2tbLTFdID0gbnVtICsgc3RhY2tbLTFdCgkJCQllbHNlOgoJCQkJCXN0YWNrLmFwcGVuZCgzKQoJCQkJCWlmIG5vdCAobmVnID09IGYpOgoJCQkJCQlzdGFja1stMV0gPSAoLTEpICogc3RhY2tbLTFdCgkJCQlzdGFydF9udW0gPSB0CgkJCWVsaWYgc1tpXSA9PSAiNCI6CgkJCQlpZiBzdGFydF9udW0gPT0gdDoKCQkJCQludW0gPSBpbnQoIjQiKQoJCQkJCWlmIG5vdCAobm90IG5lZyk6CgkJCQkJCW51bSA9ICgtMSkgKiBudW0KCQkJCQlzdGFja1stMV0gPSAxMCAqIHN0YWNrWy0xXQoJCQkJCXN0YWNrWy0xXSA9IG51bSArIHN0YWNrWy0xXQoJCQkJZWxzZToKCQkJCQlzdGFjay5hcHBlbmQoNCkKCQkJCQlpZiBub3QgKG5lZyA9PSBmKToKCQkJCQkJc3RhY2tbLTFdID0gKC0xKSAqIHN0YWNrWy0xXQoJCQkJc3RhcnRfbnVtID0gdAoJCQllbGlmIHNbaV0gPT0gIjUiOgoJCQkJaWYgc3RhcnRfbnVtID09IHQ6CgkJCQkJbnVtID0gaW50KCI1IikKCQkJCQlpZiBub3QgKG5vdCBuZWcpOgoJCQkJCQludW0gPSAoLTEpICogbnVtCgkJCQkJc3RhY2tbLTFdID0gMTAgKiBzdGFja1stMV0KCQkJCQlzdGFja1stMV0gPSBudW0gKyBzdGFja1stMV0KCQkJCWVsc2U6CgkJCQkJc3RhY2suYXBwZW5kKDUpCgkJCQkJaWYgbm90IChuZWcgPT0gZik6CgkJCQkJCXN0YWNrWy0xXSA9ICgtMSkgKiBzdGFja1stMV0KCQkJCXN0YXJ0X251bSA9IHQKCQkJZWxpZiBzW2ldID09ICI2IjoKCQkJCWlmIHN0YXJ0X251bSA9PSB0OgoJCQkJCW51bSA9IGludCgiNiIpCgkJCQkJaWYgbm90IChub3QgbmVnKToKCQkJCQkJbnVtID0gKC0xKSAqIG51bQoJCQkJCXN0YWNrWy0xXSA9IDEwICogc3RhY2tbLTFdCgkJCQkJc3RhY2tbLTFdID0gbnVtICsgc3RhY2tbLTFdCgkJCQllbHNlOgoJCQkJCXN0YWNrLmFwcGVuZCg2KQoJCQkJCWlmIG5vdCAobmVnID09IGYpOgoJCQkJCQlzdGFja1stMV0gPSAoLTEpICogc3RhY2tbLTFdCgkJCQlzdGFydF9udW0gPSB0CgkJCWVsaWYgc1tpXSA9PSAiNyI6CgkJCQlpZiBzdGFydF9udW0gPT0gdDoKCQkJCQludW0gPSBpbnQoIjciKQoJCQkJCWlmIG5vdCAobm90IG5lZyk6CgkJCQkJCW51bSA9ICgtMSkgKiBudW0KCQkJCQlzdGFja1stMV0gPSAxMCAqIHN0YWNrWy0xXQoJCQkJCXN0YWNrWy0xXSA9IG51bSArIHN0YWNrWy0xXQoJCQkJZWxzZToKCQkJCQlzdGFjay5hcHBlbmQoNykKCQkJCQlpZiBub3QgKG5lZyA9PSBmKToKCQkJCQkJc3RhY2tbLTFdID0gKC0xKSAqIHN0YWNrWy0xXQoJCQkJc3RhcnRfbnVtID0gdAoJCQllbGlmIHNbaV0gPT0gIjgiOgoJCQkJaWYgc3RhcnRfbnVtID09IHQ6CgkJCQkJbnVtID0gaW50KCI4IikKCQkJCQlpZiBub3QgKG5vdCBuZWcpOgoJCQkJCQludW0gPSAoLTEpICogbnVtCgkJCQkJc3RhY2tbLTFdID0gMTAgKiBzdGFja1stMV0KCQkJCQlzdGFja1stMV0gPSBudW0gKyBzdGFja1stMV0KCQkJCWVsc2U6CgkJCQkJc3RhY2suYXBwZW5kKDgpCgkJCQkJaWYgbm90IChuZWcgPT0gZik6CgkJCQkJCXN0YWNrWy0xXSA9ICgtMSkgKiBzdGFja1stMV0KCQkJCXN0YXJ0X251bSA9IHQKCQkJZWxpZiBzW2ldID09ICI5IjoKCQkJCWlmIHN0YXJ0X251bSA9PSB0OgoJCQkJCW51bSA9IGludCgiOSIpCgkJCQkJaWYgbm90IChub3QgbmVnKToKCQkJCQkJbnVtID0gKC0xKSAqIG51bQoJCQkJCXN0YWNrWy0xXSA9IDEwICogc3RhY2tbLTFdCgkJCQkJc3RhY2tbLTFdID0gbnVtICsgc3RhY2tbLTFdCgkJCQllbHNlOgoJCQkJCXN0YWNrLmFwcGVuZCg5KQoJCQkJCWlmIG5vdCAobmVnID09IGYpOgoJCQkJCQlzdGFja1stMV0gPSAoLTEpICogc3RhY2tbLTFdCgkJCQlzdGFydF9udW0gPSB0CgkJCWVsaWYgc1tpXSA9PSAiMCI6CgkJCQlpZiBzdGFydF9udW0gPT0gdDoKCQkJCQlzdGFja1stMV0gPSAxMCAqIHN0YWNrWy0xXQoJCQkJZWxpZiBub3QgKHN0YXJ0X251bSA9PSB0KToKCQkJCQlyYWlzZSAiVWggb2giCgoJCQloYW5kbGVfc3RhY2soc3RhY2ssIGkgKyAxLCB0LCBmLCBuZWcsIHN0YXJ0X251bSkKCQllbHNlOgoJCQlkZWwgaQoJCQlkZWwgbmVnCgkJCWRlbCBzdGFydF9udW0KCQkJcmFpc2UgQmFzZUV4Y2VwdGlvbihzdGFjaykKCgl0cnk6CgkJaGFuZGxlX3N0YWNrKHN0YWNrKQoJZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZToKCQlzdGFjayA9IF9faW1wb3J0X18oImFzdCIpLmxpdGVyYWxfZXZhbChzdHIoZSkpCgoJaVN3YXBwZWRJdCA9IHQKCXdoaWxlIGlTd2FwcGVkSXQ6CgkJaVN3YXBwZWRJdCA9IGYKCQlmb3IgaSBpbiByYW5nZSgxLCBsZW4oc3RhY2spKToKCQkJaWYgc3RhY2tbaSAtIDFdID4gc3RhY2tbaV06CgkJCQl0ZW1wID0gc3RhY2tbaV0KCQkJCXN0YWNrW2ldID0gc3RhY2tbaSAtIDFdCgkJCQlzdGFja1tpIC0gMV0gPSB0ZW1wCgkJCQlpU3dhcHBlZEl0ID0gdAoKCXNtYWxsX3RoaW5nID0gc3RhY2tbMF0KCglqID0gbGVuKHN0YWNrKSAtIDEKCXdoaWxlIGogPiAwIG9yIGogPT0gMDoKCQlzdGFjazIuYXBwZW5kKHN0YWNrW2pdKQoJCWogPSBqIC0gMQoKCWJpZ190aGluZyA9IHN0YWNrMlswXQoJCglJTlBVVF9CVUZGRVIgPSBbYmlnX3RoaW5nLCBzbWFsbF90aGluZ11bOjotMV0KCU9VVFBVVF9TVFJJTkcgPSBbXQoJZGVsaW1pbmF0ZSA9IGYKCWRlbGltaW5hdG9yID0gIiwiCgoJcmVhbF9sID0gMAoKCWZvciBsIGluIHJhbmdlKDAsIDMsIDEpOgoJCWlmIGRlbGltaW5hdGUgb3Igbm90IChub3QgZGVsaW1pbmF0ZSk6CgkJCU9VVFBVVF9TVFJJTkcuYXBwZW5kKGRlbGltaW5hdG9yKQoJCWVsaWYgbm90IChkZWxpbWluYXRlID09IHQpIGFuZCBub3QgKG5vdCB0KToKCQkJdGVtcG8gPSBfX2ltcG9ydF9fKCJjb3B5IikuZGVlcGNvcHkoT1VUUFVUX1NUUklORykKCQkJZm9yIGl4IGluIHN0cihJTlBVVF9CVUZGRVJbcmVhbF9sXSk6CgkJCQl0ZW1wby5hcHBlbmQoY2hyKG9yZChpeCkpKQoJCQlPVVRQVVRfU1RSSU5HID0gdGVtcG8KCQkJcmVhbF9sID0gcmVhbF9sICsgMQoJCWlmIG5vdCBsOgoJCQlkZWxpbWluYXRlID0gdAoJCWVsaWYgbDoKCQkJZGVsaW1pbmF0ZSA9IGYKCglzdGFjay5jbGVhcigpCglzdGFjazIuY2xlYXIoKQoJCglyZXR1cm4gJycuam9pbihPVVRQVVRfU1RSSU5HKQoKdGVzdHMgPSBbCgkoIjEsNiwyLDgsMyIsICIxLDgiKSwKCSgiMSw4LDQsOSwtNCwyLDIiLCAiLTQsOSIpLCAKCSgiNCw3LDEsOCwtMiIsICItMiw4IikKXQoKZm9yIChpLCBleHBlY3RlZCkgaW4gdGVzdHM6CglhY3R1YWwgPSBoaWdoX2FuZF9sb3coaSkKCWlmIGFjdHVhbCA9PSBleHBlY3RlZDoKCQlwcmludCgiaGlnaF9hbmRfbG93KFwie31cIikgPT0gXCJ7fVwiOiBQQVNTIi5mb3JtYXQoaSwgZXhwZWN0ZWQpKQoJZWxzZToKCQlwcmludCgiaGlnaF9hbmRfbG93KFwie31cIikgPT0gXCJ7fVwiOiBGQUlMIi5mb3JtYXQoaSwgZXhwZWN0ZWQpKQoJCXByaW50KCJcdEFjdHVhbDoge30iLmZvcm1hdChhY3R1YWwpKQ==