Judul dicuri terinspirasi oleh jawaban Greg Hewgill untuk Apa perbedaan antara JavaScript dan Java?
pengantar
Java dan JavaScript adalah bahasa yang umum digunakan di kalangan programmer, dan saat ini merupakan tag paling populer di Stack Overflow. Namun seperti yang kita semua tahu, selain dari nama yang mirip, keduanya hampir tidak memiliki kesamaan.
Untuk menghormati salah satu perdebatan pemrograman yang paling terkenal, dan terinspirasi oleh frustrasi saya baru-baru ini dalam pencarian tag , saya mengusulkan yang berikut:
Tantangan
Tulis program yang menggunakan string sebagai input. Kembali car
jika string dimulai dengan "Java" dan tidak termasuk "JavaScript". Kalau tidak, kembalilah carpet
.
Contoh Input dan Output
mobil:
java
javafx
javabeans
java-stream
java-script
java-8
java.util.scanner
java-avascript
JAVA-SCRIPTING
javacarpet
karpet:
javascript
javascript-events
facebook-javascript-sdk
javajavascript
jquery
python
rx-java
java-api-for-javascript
not-java
JAVASCRIPTING
Catatan
- Pencocokan input harus peka huruf besar kecil
- Hanya kemungkinan untuk output yang seharusnya
car
ataucarpet
- Poin bonus imajiner jika jawaban Anda menggunakan Java, JavaScript, atau Regex
- Judul Alternatif: Java adalah JavaScript, ham juga untuk hamster
code-golf
string
decision-problem
pattern-matching
Stevoisiak
sumber
sumber
javacarpet
mungkin akan menemukan bug yang tidak dimiliki oleh test case yang ada.imaginary bonus points if your answer uses Java, Javascript, or Regex
, apakah itu membuat bytecount solusi seperti itu kompleks? ;)Alternate Title: Java is to JavaScript as ham is to hamster
Sebenarnya, "ham" di "hamster" adalah serumpun untuk makanan "ham". Makanan "ham" adalah daging babi, dan istilah "hamster" berasal dari hewan yang terkait, babi guinea, yang dagingnya menggantikan daging babi pada perjalanan laut yang panjang karena hewan lebih mudah dipelihara di atas kapal.Jawaban:
Java / JavaScript Polyglot,
108107106 byteJalankan sebagai Java
Cobalah online!
Catatan: jangan percayai highlight karena itu salah. Java asli, yang ditafsirkan dengan benar seperti di bawah ini karena
\u000A
ditafsirkan dalam langkah pertama kompilasi sebagai\n
, secara de facto mengakhiri komentar yang dimulai dengan komentar baris (//
).Jalankan sebagai JavaScript
Kredit ke @CowsQuak untuk versi JS.
Berapa banyak bonus poin imajiner untuk jawaban ini?
-1 byte terima kasih kepada @Nevay dalam jawaban Java.
sumber
a
dan=>
. Saya berusaha tetap semangat bermain golf. Jika saya melakukan sesuatu yang salah, tolong beri tahu saya?JavaScript,
5049 byteDisimpan 1 byte berkat @ValueInk dengan mengatur ulang regex
Cuplikan tes
sumber
/^java(?!script)/i
Java (OpenJDK 8) ,
9282725857 byteCobalah online!
1 byte disimpan berkat @Nevay !
sumber
C (hanya panggilan menempatkan), 131 byte
Itu memang memiliki masalah, tetapi melewati semua testcases yang disediakan :)
baik ... tidak, terima kasih
sumber
05AB1E , 21 byte
Cobalah online!
sumber
lD“¦‚“åi“¾„“ë“îá“åi…carë
3 byte lebih banyak dan 1 jam terlambat :(. Kerja bagus.Python 2 , 68 byte
Cobalah online!
-11 byte terima kasih kepada notjagan
-2 byte terima kasih untuk Dennis
sumber
;
diperlukan jadi saya karena saya harus menggunakannya toh baris baru tidak perlu: P Itu sebabnya saya menggunakannya.C #,
8078 bytesumber
UNGGULGoogle Sheets,8986 BytesDisimpan 3 byte berkat Taylor Scott
Mengambil input pada A1
Penjelasan
sumber
Search
es denganFind
s untuk -2 byte dan yang dapat diterjemahkan lebih lanjut ke rumus lembar google untuk -3 byte dengan tidak menutup tiga parens terakhirvim, 58 byte
Cobalah online!
sumber
g
perintah mungkin sedikit lebih pendek, kira-kira seperti:g/\cjavascript/d
:g!/^\cjava/d
icarpet␛:s/pet..*
.Jelly , 27 byte
Cobalah online!
sumber
Rubi , 42 + 1 = 43 byte
Menggunakan
-p
bendera.Cobalah online!
sumber
Retina ,
4437 byteTerima kasih kepada @MartinEnder untuk bermain golf 7 byte!
Cobalah online!
sumber
Common Lisp,
131125 byteCobalah online!
Ukuran berkurang berkat # n = "trik" Common Lisp.
Penjelasan
sumber
C (tcc),
144136 byteCobalah online!
Belum dibuka:
sumber
Excel, 84 byte
sumber
Excel VBA, 76 Bytes
Fungsi jendela langsung VBE anonim yang mengambil input dari jangkauan
[A1]
dan keluaran adalahcar
/carpet
status ke jendela langsung VBETidak menggunakan RegExp
sumber
Python 3 , 95 byte
Cobalah online!
Ya, itu bisa lebih pendek tapi saya ingin mencoba menggunakan lambda bersarang!
sumber
and
,or
,if
,else
Perl , 42 byte
Saya percaya jawaban oleh stevieb memiliki output yang salah (mencoba sendiri - ia mengembalikan mobil untuk 'javajavascript'). Ini seharusnya bekerja:
sumber
Mathematica, 82 byte
regex
sumber
JAISBaL , 36 byte
Verbose / penjelasan:
JAISBaL adalah upaya pertama saya dalam mendesain bahasa golf, jadi ini agak aneh ... tidak ada yang cocok atau mengandung, regex atau sebaliknya, jadi alih-alih kita harus membelah dan memeriksa panjang array yang dihasilkan ... karena JAISBaL memiliki split-by -regex ... tetapi tidak ada dukungan regex lainnya .... karena alasan.
Regex
dicuridipinjam dari jawaban @Cows Quack .sumber
Python 2 , 69 byte
Saat ini 1 byte lebih lama dari solusi Python 2 terpendek.
Cobalah online!
sumber
Perl , 36 byte
Jalankan seperti itu:
sumber
Batch, 91 byte
Mengambil input pada STDIN. Batch tidak memiliki operator perbandingan yang tidak peka huruf besar kecil tetapi ia memiliki penggantian string yang tidak peka huruf besar kecil sehingga saya dapat menetapkan sementara untuk empat karakter pertama dan kemudian huruf besar-kecil mengganti java, yang kemudian akan menghasilkan string kosong. Sementara itu saya huruf javascript menggantikan tidak sensitif dalam string asli, yang seharusnya tidak berubah.
sumber
Lua, 96 byte
sumber
Perl,
988462 BytesCobalah online!
Terima kasih kepada bytepusher
sumber
return $b;
dengan adil$b;
. Perl selalu mengembalikan pernyataan yang terakhir dievaluasi. Karena kami tidak peduli dengan peringatan, Anda bahkan dapat menghapus ';' untuk$b}
. Anda tidak perlu tanda kurung di sekitar if. Jika Anda menggunakan||
alih-alihor
, Anda bisa menyimpan spasi putih setelah regex.!~
bukannya! =~
kondisi kedua bisalc$_[0]!~
. `->sub a{$b="car";$b.="pet"if lc$_[0]=~/javascript/||lc$_[0]!~/^java/;$b}
. Menggunakan ops ternary membawanya turun satu lagisub a{$b="car";$b.="pet"if lc$_[0]=~/javascript/||lc$_[0]!~/^java/;$b}
$_[0] =~//i||$_[0]!~//i
. Dan akhirnya, mengapa variabel?sub a{"car".($_[0]=~/javascript/i||$_[0]!~/^java/i?'pet':'');}
harus baik-baik saja :). Dan sekarang: perl akan menyenangkan dan membiarkan Anda menggunakan $ _ [0] tanpa menentukannya (meskipun tidak dengan!~
):sub a{"car".(/javascript/i||!/^java/i?'pet':'')}
-> 48 :)Dart VM,
104 byte,102 bytePenjelasan :
Diturunkan:
Kami memiliki fungsi utama kami yang biasa
Kami ganti
p
denganp[0].toLowerCase();
sehingga kami tidak perlu mendeklarasikan variabel baru (var
ditambah spasi akan menjadi 4 byte tambahan)Kami kemudian melanjutkan untuk melakukan pencetakan yang sebenarnya
Kami mencetak
car
tanpa syarat dan kami menggunakan inline statement untuk memeriksa apakah akan mencetakpet
setelahnya atau tidak. Jika memiliki string 'java' pada indeks 0 dan tidak memiliki 'javascript' di dalamnya, kami tidak melakukan apa-apa (kami sebenarnya menambahkan string kosong tetapi tidak memiliki efek apa pun) dan jika tidak kami tambahkanpet
.sumber
Karat, 97 byte
Saya cukup yakin bahwa ada solusi yang lebih pendek tetapi ini adalah percobaan pertama saya :)
sumber
Bracmat , 66 byte
Cobalah online!
sumber