Write a function that takes an arbitrary number of strings and interlaces them (combines them by alternating characters from each string).

For example `combineStrings('abc', '123')` should return `'a1b2c3'`.

If the strings are different lengths the function should interlace them until each string runs out, continuing to add characters from the remaining strings.

For example `combineStrings('abcd', '123')` should return `'a1b2c3d'`.

The function should take any number of arguments and combine them.

For example `combineStrings('abc', '123', '£$%')` should return `'a1£b2$c3%'`.

**Note: if only one argument is passed return only that string. If no arguments are passed return an empty string.**

Source: codewars | Difficulty: EASY
Tags: Fundamentals

Starter code: def combine_strings(*args):
	

Solutions:
from itertools import zip_longest

def combine_strings(*args):
	return ''.join((''.join(x) for x in zip_longest(*args, fillvalue='')))


from itertools import zip_longest, chain

def combine_strings(*args):
	return ''.join(chain(*zip_longest(*args, fillvalue='')))


from itertools import zip_longest
combine_strings = lambda *strings: ''.join(map(''.join, zip_longest(*strings, fillvalue='')))


from itertools import zip_longest as zl

def combine_strings(*stgs):
	return ''.join((''.join(z) for z in zl(*stgs, fillvalue='')))


import itertools

def combine_strings(*args):
	return ''.join((''.join(i) for i in itertools.zip_longest(*args, fillvalue='')))


from itertools import zip_longest

def combine_strings(*args):
	return ''.join(map(''.join, zip_longest(*args, fillvalue='')))


import itertools as it

def combine_strings(*argv):
	return ''.join(it.chain(*it.zip_longest(*argv, fillvalue='')))


def combine_strings(*args):
	sol = ''
	words = []
	if len(args) == 0:
		return sol
	for a in args:
		words.append(list(a))
	while 1:
		for (i, w) in enumerate(words):
			if len(w) != 0:
				sol = sol + w[0]
				words[i].remove(w[0])
		if all((not element for element in words)):
			break
	return sol