More Kotlin vs Java puzzlers
This commit is contained in:
@@ -11,6 +11,12 @@ fun array(vararg array : Float) = array
|
|||||||
|
|
||||||
fun Any?.identityEquals(other : Any?) = this === other
|
fun Any?.identityEquals(other : Any?) = this === other
|
||||||
|
|
||||||
|
fun <T : Any> T?.npe() : T {
|
||||||
|
if (this == null)
|
||||||
|
throw NullPointerException()
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
namespace io {
|
namespace io {
|
||||||
import java.io.*
|
import java.io.*
|
||||||
|
|
||||||
@@ -46,4 +52,10 @@ namespace io {
|
|||||||
}
|
}
|
||||||
return stdin?.readLine()
|
return stdin?.readLine()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace string {
|
||||||
|
fun String.replaceAll(pattern : String, replacement : String) : String {
|
||||||
|
return java.util.regex.Pattern.compile(pattern).matcher(this).replaceAll(replacement).npe()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package _03_character._14_Escape_Rout;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bloch, Joshua; Gafter, Neal (2005-06-24). Java™ Puzzlers: Traps, Pitfalls, and Corner Cases (p. 31). Pearson Education (USA). Kindle Edition.
|
||||||
|
*/
|
||||||
|
public class EscapeRout {
|
||||||
|
public static void main(String[ ] args) {
|
||||||
|
// \u0022 is the Unicode escape for double quote (")
|
||||||
|
System.out.println("a\u0022.length( ) + \u0022b".length( ));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
namespace escape.rout
|
||||||
|
|
||||||
|
import std.io.*
|
||||||
|
import std.*
|
||||||
|
|
||||||
|
fun main(args : Array<String>) {
|
||||||
|
// \u0022 is the Unicode escape for double quote (")
|
||||||
|
println("a\u0022.length( ) + \u0022b".length)
|
||||||
|
|
||||||
|
// The actual string:
|
||||||
|
println("a\u0022.length( ) + \u0022b")
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package _03_character._15_Hello_Whirled;
|
||||||
|
|
||||||
|
// Bloch, Joshua; Gafter, Neal (2005-06-24). Java™ Puzzlers: Traps, Pitfalls, and Corner Cases (p. 33). Pearson Education (USA). Kindle Edition.
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generated by the IBM IDL-to-Java compiler, version 1.0
|
||||||
|
* from F:\TestRoot\apps\a1\ units\include\PolicyHome.idl <-- DELETE THE SPACE BEFORE 'u'
|
||||||
|
* Wednesday, June 17, 1998 6:44:40 o'clock AM GMT+00:00
|
||||||
|
*/
|
||||||
|
public class Test {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
System.out.print("Hell");
|
||||||
|
System.out.println("o world");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
namespace hello.whirled
|
||||||
|
|
||||||
|
import std.io.*
|
||||||
|
import std.*
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generated by the IBM IDL-to-Java compiler, version 1.0
|
||||||
|
* from F:\TestRoot\apps\a1\units\include\PolicyHome.idl
|
||||||
|
* Wednesday, June 17, 1998 6:44:40 o'clock AM GMT+00:00
|
||||||
|
*/
|
||||||
|
fun main(args : Array<String>) {
|
||||||
|
print("Hell");
|
||||||
|
println("o world");
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package _03_character._16_Line_Printer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bloch, Joshua; Gafter, Neal (2005-06-24). Java™ Puzzlers: Traps, Pitfalls, and Corner Cases (p. 35). Pearson Education (USA). Kindle Edition.
|
||||||
|
*/
|
||||||
|
public class LinePrinter {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// Note: \ u000A is Unicode representation of linefeed (LF) <-- DELETE THE SPACE BEFORE 'u'
|
||||||
|
char c = 0x000A;
|
||||||
|
System.out.println(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
namespace line.printer
|
||||||
|
|
||||||
|
import std.io.*
|
||||||
|
import std.*
|
||||||
|
|
||||||
|
fun main(args : Array<String>) {
|
||||||
|
// Note: \u000A is Unicode representation of linefeed (LF)
|
||||||
|
val c : Char = 0x000A .chr;
|
||||||
|
println(c);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package _03_character._17_Huh;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bloch, Joshua; Gafter, Neal (2005-06-24). Java™ Puzzlers: Traps, Pitfalls, and Corner Cases (p. 37). Pearson Education (USA). Kindle Edition.
|
||||||
|
*/
|
||||||
|
|
||||||
|
\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020\u0020
|
||||||
|
\u0063\u006c\u0061\u0073\u0073\u0020\u0055\u0067\u006c\u0079
|
||||||
|
\u007b\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020
|
||||||
|
\u0020\u0020\u0020\u0020\u0073\u0074\u0061\u0074\u0069\u0063
|
||||||
|
\u0076\u006f\u0069\u0064\u0020\u006d\u0061\u0069\u006e\u0028
|
||||||
|
\u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u0020\u0020
|
||||||
|
\u0020\u0020\u0020\u0020\u0061\u0072\u0067\u0073\u0029\u007b
|
||||||
|
\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074
|
||||||
|
\u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0020
|
||||||
|
\u0022\u0048\u0065\u006c\u006c\u006f\u0020\u0077\u0022\u002b
|
||||||
|
\u0022\u006f\u0072\u006c\u0064\u0022\u0029\u003b\u007d\u007d
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
// You must be kidding
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package _03_character._18_String_Cheese;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bloch, Joshua; Gafter, Neal (2005-06-24). Java™ Puzzlers: Traps, Pitfalls, and Corner Cases (p. 39). Pearson Education (USA). Kindle Edition.
|
||||||
|
*/
|
||||||
|
public class StringCheese {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
byte[] bytes = new byte[256];
|
||||||
|
for (int i = 0; i < 256; i++)
|
||||||
|
bytes[i] = (byte) i;
|
||||||
|
String str = new String(bytes);
|
||||||
|
for (int i = 0, n = str.length(); i < n; i++)
|
||||||
|
System.out.print((int) str.charAt(i) + " ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package _03_character._20_Whats_My_Class;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bloch, Joshua; Gafter, Neal (2005-06-24). Java™ Puzzlers: Traps, Pitfalls, and Corner Cases (p. 43). Pearson Education (USA). Kindle Edition.
|
||||||
|
*/
|
||||||
|
public class Me {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
System.out.println(Me.class.getName().replaceAll(".", "/") + ".class");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
namespace whats.my.`class`
|
||||||
|
|
||||||
|
import std.io.*
|
||||||
|
import std.*
|
||||||
|
import std.string.*
|
||||||
|
import typeinfo.*
|
||||||
|
|
||||||
|
class Me {
|
||||||
|
fun main() {
|
||||||
|
(this as Object).getClass()?.getCanonicalName()?.replaceAll(".", "/")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun main(args : Array<String>) {
|
||||||
|
// Note: \u000A is Unicode representation of linefeed (LF)
|
||||||
|
val c : Char = 0x000A .chr;
|
||||||
|
println(c);
|
||||||
|
println("a\u \u0 \u00 \u000 \u0000 \u0AaA \u0AAz.length( ) + \u0022b")
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user