Tugas
Dalam tantangan ini, tugas Anda adalah menulis program atau fungsi yang menggunakan sebuah String dan menghasilkan nilai true atau falsey berdasarkan pada apakah karakter pertama dan karakter terakhir dari String input sama.
Memasukkan
Anda dapat mengambil input dengan cara apa pun yang masuk akal. Namun, dengan asumsi bahwa input hadir dalam variabel yang telah ditentukan tidak diperbolehkan. Membaca dari file, konsol, baris perintah, bidang input dll., Atau mengambil input sebagai argumen fungsi diperbolehkan.
Keluaran
Anda dapat menampilkan dalam format apa pun yang masuk akal, kecuali untuk menetapkan hasil ke variabel. Menulis ke file, konsol, baris perintah, kotak modal, return
pernyataan fungsi dll. Diperbolehkan.
Aturan tambahan
Input dapat berupa String kosong juga, yang mana Anda harus mengembalikan nilai falsey.
String Input Single-Char harus memiliki hasil yang benar.
Program Anda harus peka terhadap huruf besar-kecil.
helloH
harus menampilkan nilai falsey.Anda hanya dapat memiliki nilai Kebenaran tunggal dan nilai Falsey tunggal. Misalnya, mengeluarkan
false
untuk String Input dan0
untuk String input lain karena nilai Falsey tidak diperbolehkan.
Uji Kasus
Input -> Output
"10h01" Truthy
"Nothing" Falsey
"Acccca" Falsey
"wow!" Falsey
"wow" Truthy
"H" Truthy
"" Falsey
Ini adalah kode-golf , jadi kode terpendek dalam byte menang!
.
, tetapi tidak akan cocok dengan umpan baris. Secara umum, jika Anda menemukan diri Anda menggunakan tag string , tentukan dengan tepat karakter apa yang dapat muncul dalam input.AbAb => false
Jawaban:
Jelly , 3 byte
Cobalah online!
sumber
Python 3 , 23 byte
Output adalah melalui kode keluar, jadi 0 (sukses) benar dan 1 (gagal) salah. Jika ini dapat diterima, satu byte dapat disimpan.
Cobalah online!
Bagaimana itu bekerja
Pertama-tama, jika s adalah string kosong,
s[0]
akan menaikkan IndexError , menyebabkan program gagal.Untuk non-kosong s , jika karakter pertama dan terakhir adalah sama,
s[0]!=s[-1]
akan mengevaluasi ke False , sehingga keluar program bersih dan segera.Akhirnya, jika karakternya berbeda,
s[0]!=s[-1]
akan dievaluasi menjadi True , menyebabkan kompassons[-1]<e
dijalankan. Karena e tidak terdefinisi, itu memunculkan NameError .Jika kompatibilitas dengan Python 2 tidak diinginkan,
berfungsi juga, karena membandingkan string dengan integer menimbulkan TypeError .
sumber
JavaScript, 19 byte
sumber
endsWith
metode objek String. Bagus! :)endsWith()
?! Saya sudah menunggu kesempatan untuk menggunakannya.Mathematica, 15 byte
Mengambil array karakter. Melempar kesalahan saat input kosong tetapi bisa diabaikan.
sumber
===
menangani kasing kosong :)05AB1E , 4 byte
Cobalah online! atau Coba Semua Tes
sumber
ÂâćüQ
menjadi lebih membingungkan dan mendapatkan satu byte!ćsθQ
adalah byter 4-lain.Retina ,
1312 byteCobalah online! Termasuk kamar uji. Sunting: Disimpan 1 byte berkat @Kobi.
sumber
C ++, 39 byte
Program lengkap:
Cobalah online
sumber
s[0]
untuk*s
menyelamatkan dua byte masing-masing?Brachylog , 4 byte
Cobalah online!
Penjelasan
sumber
Java,
8177 byteCoba Online
true
jika mereka sama, jika tidakfalse
,false
untuk string kosongVersi Array, 60 byte
sumber
Charcter.MAX_VALUE - Character.MIN_VALUE
, yaitu 65535s.charAt(l-1)==s.charAt(0)
akan menghemat dua byte.Python 2 ,
262524 byteTerimakasih untuk @Dennis karena telah menghemat satu byte!
Cobalah online!
sumber
brainfuck , 43 byte
Cobalah online!
Penjelasan
Loop utama adalah
[>[->+<<->],]
. Setelah setiap iterasi, sel di sebelah kanan posisi saat ini adalah byte pertama dari string, dan sel di sebelah kiri adalah perbedaan antara karakter yang paling baru ditangani dan yang pertama.<[[-]-<]
mengkonversi hasil akhir menjadi -1 jika bukan nol, dan sisanya mengkonversi -1 dan 0 menjadi 48 dan 49 ("0" dan "1").sumber
Haskell , 21 byte
c
mengambilString
dan mengembalikan aBool
.Cobalah online!
c s=s!!0==last s
.take 1s
memberikan daftar yang hanya elemen pertamas
kecualis
kosong, dalam hal ini kosong juga.last s
akan kesalahan pada string kosong, tetapi kemalasan Haskell menyimpannya: Sebuah string dengan elemen tunggal selalu berbeda dari string kosong, tanpa mengevaluasi elemennya.sumber
MATL, 5 byte
Cobalah di MATL Online!
Penjelasan
Dalam hal ini, bahwa string input kosong harus ditangani, maka sesuatu seperti berikut (8 byte) akan berfungsi
Solusi ini hanya menambahkan
0
ke depan matriks N x N sehingga untuk input kosong, ketika matriks tersebut0 x 0
, masih ada0
nilai yang kemudian diambil oleh0)
Cobalah di MATL Online
sumber
5L)d~
.tn?&=PO)}F
untuk menangani input kosong; tidak yakin apakah ada cara yang lebih efisien)Japt , 6 byte
Cobalah online!
sumber
false
). Saya pikir Anda dapat memperbaikinya dengantJ ¥Ug
APL (Dyalog) , 4 byte
Cobalah online!
Penjelasan
Inilah alasan mengapa ini berfungsi pada string kosong. Menerapkan
⊃
string kosong mengembalikan spasi. Tetapi membalikkan string kosong masih mengembalikan string kosong, jadi membandingkan string kosong dengan string non-kosong (dalam hal ini
) memberikan vektor numerik kosong. Dan menerapkan
⊃
kembali vektor numerik kosong0
. Oleh karena itu melewatkan string kosong kembali0
.sumber
(⊃⌽)=⊃
atau⊢/=⊃
, tetapi tidak satu pun dari mereka memberikan hasil yang tepat. Alih-alih⌽=⊃
membandingkan string yang dibalik dengan karakter pertama, lalu mengambil elemen pertama dari itu. Jika string kosong, akhirnya membandingkan ruang ke string kosong, yang memberikan daftar Boolean kosong, di mana elemen pertama (dipaksakan)⊃
adalah0
- jawaban yang benar untuk string kosong. Ekspresi Anda setara dengan⊃⊃=⌽
karena=
komutatif.⊃⌽=⊃
tidak sama dengan(⊃⌽)=⊃
. Ini lebih mahal, karena membandingkan semua elemen bukan hanya yang pertama dan terakhir. Juga tidak akan berhasil jika nomor OP digunakan daripada string.The first argument reversed
→The right argument reversed
Java,
5243 byteUntuk membuatnya berfungsi, masukkan ini ke dalam fungsi seperti berikut ini yang membuat lambda "pergi":
sumber
s.endsWith(""+s.charAt(0))
instead ofs.charAt(0)==s.charAt(s.length()-1)
s->""!=s&&s.endsWith(""+s.charAt(0))
new String()
into the lambda. It will throw an exception. Reference semantics do not work here.Ruby,
2624 bytesSaved two bytes thanks to @philomory!
First post on codegolf -))
sumber
e[0]&&e[0]==e[-1]
, since ife
is empty,e[0]
will be nil. Actually, come to think of it,nil
is no good since it's falsey but not the same falsey that the comparison returns; still, after adding!!
you're still saving 2 characters.PHP>=7.1, 23 Bytes
prints 1 for equal and nothing if the character is different
sumber
Swift, 57 bytes
sumber
a.last
necessary?C#,
3830 bytesSaved 8 bytes thanks to @raznagul.
sumber
s
just compare it with""
. Also you don't need the?:
-Operator. Using&&
has the same result.&
have the same effect too?&
doesn't work. With&&
the second expression is not validated if the first expression is false. With&
the seconds expression is always validated and fails with aIndexOutOfRangeException
on the empty string test case.s.Last()
instead ofs[s.Length-1]
R, 40 bytes
Thanks to Nitrodon for -2 bytes.
Thanks to MickyT for -8 bytes.
Test:
Output:
sumber
rev(y<-el(strsplit(x,"")))==y
.f=
function(x)x>""&&rev(y<-charToRaw(x))==y
><>,
3933 bytesThis is my first time both using ><> and playing code golf, so helpful suggestions would be appreciated.
The code is in three basic sections.
sumber
Google Sheets, 33 Bytes
Takes input from cell
[A1]
and outputs1
for truthy input and0
for falsey input.It is noted that the parentheticals in
Exact(
andRight(
are left unclosed as Google Sheets automatically corrects this as soon as the user has input the formula text and pressed enter to leave that cell.Output
sumber
&
like that. Also, it considersA=a
to be true. The shortest I can get is 38 bytes:=AND(EXACT(LEFT(A1),RIGHT(A1)),A1<>"")
or the alternative=IFERROR(CODE(A1)=CODE(RIGHT(A1)),1=0)
.TRUE
for any non-error input. (screenshot) Does it work in your copy for all test cases? ExcelGuy has an answer that ends up like mine above for the same reasons.*
instead&
for the binary and statement, but that still leaves the"A"="a"
issue, which I had completely overlooked. All of that and a bit of syntax corrections leads me to=EXACT(LEFT(A1),RIGHT(A1))*(A1<>"")
for 35, but I have switched the language to Google Sheets, which allowed me to drop the terminal double parenthetical in theExact
statement, rendering=(A1<>"")*Exact(Left(A1),Right(A1
for 33 bytesR,
5043414064Second solution with 41 bytes for a callable function - thanks to @niczky12 & @Giuseppe - amended for x=""
First with 50 bytes but not for the challenge
sumber
charToRaw
withutf8ToInt
to produceNA
s when the string is empty.{}
around the function body.(y==rev(y))[1]
is shorter by a byteNA
for empty string butFALSE
for"ab"
. Try it online!.Octave, 16 bytes
It takes a string
s
as input, and compares the firsts(1)
element with the lasts(end)
.This could be
@(s)s(1)-s(end)
if it was OK to swaptrue/false
tofalse/true
.sumber
GNU grep, 12 bytes
Run in extended or PCRE mode.
I don't know if this is considered cheating or not.
sumber
JavaScript, 20 bytes
Add
f=
at the beginning and invoke likef(arg)
.Explanation
This function takes in an argument
_
. In the function body,_[0]==_.slice(-1)
checks whether the first element of_
(at0
th index) equals the last element of it, and returns the appropriatetrue
orfalse
boolean.sumber
S.I.L.O.S, 81 bytes
Try it online!
sumber
Common Lisp,
83746158 bytesOriginal: 83 bytes
I've just started learning Common Lisp, so I feel like I'm bringing a putter to a driving range. There must be some kind of recursive macro wizardry or array manipulation possible here that I'm not seeing.
This is an anonymous function that accepts a string as its input:
Prettified:
Would love to see a slicker solution!
Revision 1: 74 bytes
Gotta love those standard library functions!
Ugly:
Pretty:
Revision 1.5: 61 bytes
Whitespace!
Revision 2: 58 bytes
Ugly:
Pretty:
That's all for now! I think I'm smarter already.
sumber
if
instead ofand
and(mismatch(reverse s)s)
instead of(mismatch s(reverse s))
AWK,
2934 bytesThis one might be cheating slightly, because it requires invoking AWK with the option:
In GNU Awk you can use the long-form synonyms:
So I added 5 bytes to the total to account for this.
Ugly:
Pretty:
sumber