#Java, <s>127</s> <s>111</s> 88 bytes (s,r)->{for(int i=0;i++<s.length();)r+=i%2<1?new StringBuffer(s).reverse():s;return r;}; #Ungolfed test program public static void main(String[] args) { BiFunction<String, String, String> func = (s, r) -> { for (int i = 0; i++ < s.length();) { r += i % 2 < 1 ? new StringBuffer(s).reverse() : s; } return r; }; System.out.println(func.apply("Hello!", "")); }