การเริ่มต้นเท่ากับจุดจบหรือไม่?


36

งาน

ในความท้าทายนี้งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่ใช้ในสตริงและส่งออกค่าความจริงหรือปลอมแปลงโดยพิจารณาจากตัวอักษรตัวแรกและตัวอักษรสุดท้ายของอินพุตสตริงนั้นเท่ากัน

อินพุต

คุณอาจป้อนข้อมูลด้วยวิธีใด ๆ ที่เหมาะสม อย่างไรก็ตามสมมติว่าอินพุตไม่ได้รับอนุญาตในตัวแปรที่กำหนดไว้ล่วงหน้า สามารถอ่านจากไฟล์คอนโซลบรรทัดคำสั่งฟิลด์อินพุต ฯลฯ หรือรับอินพุตเป็นอาร์กิวเมนต์ฟังก์ชันได้

เอาท์พุต

คุณสามารถส่งออกในรูปแบบที่เหมาะสมยกเว้นการกำหนดผลลัพธ์ให้กับตัวแปร อนุญาตให้เขียนไฟล์คอนโซลบรรทัดคำสั่งกล่องreturnคำสั่งฟังก์ชั่นอื่น ๆ ได้

กฎเพิ่มเติม

  • อินพุตสามารถเป็นสตริงว่างได้เช่นกันซึ่งคุณควรส่งคืนค่าเท็จ

  • Single-Char Input Strings ควรมีผลลัพธ์ที่เป็นจริง

  • โปรแกรมของคุณควรคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ helloHควรส่งออกค่าเท็จ

  • คุณสามารถมีค่าความจริงเดียวและค่า Falsey เดียว ตัวอย่างเช่นไม่อนุญาตให้ใช้เอาต์พุตfalseสำหรับอินพุตสตริงและ0สำหรับอินพุตสตริงอื่นเนื่องจากค่า Falsey

  • ไม่อนุญาตช่องโหว่มาตรฐาน

กรณีทดสอบ

Input    ->    Output

"10h01"        Truthy
"Nothing"      Falsey
"Acccca"       Falsey
"wow!"         Falsey
"wow"          Truthy
"H"            Truthy
""             Falsey

นี่คือดังนั้นโค้ดที่สั้นที่สุดในหน่วยไบต์ชนะ!


อักขระใดที่สามารถปรากฏในอินพุตได้ ASCII ที่พิมพ์ได้?
Martin Ender

@MartinEnder ASCII ที่พิมพ์ได้ แม้ว่าฉันไม่คิดว่ามันสำคัญมาก
Arjun

แน่นอนมันสำคัญ บางภาษาไม่สามารถประมวลผลอักขระที่ไม่ใช่ ASCII หรือไบต์ว่างและใน regex ฉันสามารถจับคู่อักขระ ASCII ที่พิมพ์ได้ด้วย.แต่จะไม่ตรงกับ linefeeds โดยทั่วไปหากคุณพบว่าตัวเองใช้แท็กสตริงระบุสิ่งที่ตัวละครสามารถปรากฏในการป้อนข้อมูล
Martin Ender

@MartinEnder โอเค จะดูแลในอนาคต
Arjun

กรณีทดสอบที่แนะนำ:AbAb => false
caird coinheringaahing

คำตอบ:



17

Python 3 , 23 ไบต์

s=input()
s[0]!=s[-1]<e

เอาต์พุตคือรหัสทางออกดังนั้น0 (สำเร็จ) คือความจริงและ1 (ความล้มเหลว) เป็นเท็จ ถ้านี้เป็นที่ยอมรับไบต์สามารถบันทึก

ลองออนไลน์!

มันทำงานอย่างไร

ก่อนอื่นถ้าsเป็นสตริงว่างs[0]จะเพิ่มIndexErrorทำให้โปรแกรมล้มเหลว

สำหรับผู้ที่ไม่ว่างsถ้าตัวอักษรตัวแรกและครั้งสุดท้ายที่มีค่าเท่ากันs[0]!=s[-1]จะมีการประเมินการเท็จเพื่อให้ออกจากโปรแกรมหมดจดและทันที

สุดท้ายหากตัวละครนั้นแตกต่างกันs[0]!=s[-1]จะประเมินเป็นTrueซึ่งจะทำให้การคำนวณs[-1]<eถูกดำเนินการ ตั้งแต่อีจะไม่ได้กำหนดว่ายกNameError

หากไม่ต้องการความเข้ากันได้ย้อนหลังกับ Python 2

s[0]!=s[-1]<3

ทำงานด้วยเช่นกันเนื่องจากการเปรียบเทียบสตริงที่มีจำนวนเต็มยกTypeError


บันทึก 1 ไบต์ด้วยแลมบ์ดา
OldBunny2800

1
ใช่ฟังก์ชั่นปกติก็จะบันทึกไบต์ ในขณะที่เอาต์พุตผ่านโค้ดออกเป็นฉันทามติที่จัดตั้งขึ้นไม่ใช่ข้อผิดพลาด / ข้อผิดพลาดสำหรับฟังก์ชั่นไม่ว่า ฉันเชื่อมโยงกับข้อเสนอในคำตอบของฉัน
เดนนิส

เกี่ยวกับการใช้ Python REPL
OldBunny2800

ฉันไม่คิดว่าจะช่วยได้ มันยังไม่ได้เป็นรหัสออก
เดนนิส

9

JavaScript ขนาด 19 ไบต์

a=>a.endsWith(a[0])

ว้าว. ฉันไม่รู้ด้วยซ้ำว่ามีendsWithวิธีการของวัตถุ String ดี! :)
Arjun

ฉันลืมได้endsWith()อย่างไร! ฉันรอโอกาสที่จะใช้มัน
Shaggy

7

Mathematica ขนาด 15 ไบต์

#&@@#===Last@#&

ใช้อาร์เรย์ของตัวอักษร โยนข้อผิดพลาดเมื่ออินพุตว่างเปล่า แต่สามารถละเว้นได้


4
งานที่ดีจำความจริงที่ว่า===จะจัดการกับกรณีที่ว่างเปล่า :)
เกร็กมาร์ติน

7

05AB1E , 4 ไบต์

S¬Q¤

ลองออนไลน์! หรือลองทดสอบทั้งหมด

S    # Split the input into individual characters
 ¬   # Get the first character
  Q  # Check all characters for equality to the first
   ¤ # Get the last value i.e. head == tail

1
ÂâćüQทำให้สับสนมากขึ้นและได้รับไบต์!
Magic Octopus Urn

ćsθQเป็นอีก 4 ไบต์
Magic Octopus Urn


7

C ++, 39 ไบต์

[](auto s){return s[0]&&s[0]==s.back();}

โปรแกรมเต็มรูปแบบ:

#include <string>
#include <iostream>

using namespace std;

int main()
{
    string t = "";
    auto f = [](auto s){return s[0]&&s[0]==s.back();};
    cout << f(t);
}

ลองออนไลน์


1
ฉันไม่ได้ดีที่สุดใน C ++ (โดยปกติฉันใช้ C) แต่คุณสามารถเปลี่ยนอินสแตนซ์ของs[0]เป็น*sเพื่อบันทึกสองไบต์ละกันได้ไหม
MD XF

1
@MDXF ที่จะทำงานกับอาร์เรย์ประเภท C เท่านั้น
Johan du Toit

6

Brachylogขนาด 4 ไบต์

h~t?

ลองออนไลน์!

คำอธิบาย

h       The head of the Input...
 ~t?    ...is the tail of the Input

1
ฉันต้องได้รับรอบในการใช้ตัวแปรข้อ จำกัด เหล่านั้นสำหรับอินพุต; นั่นหมายความว่าเราสามารถทำได้ในสองข้อ

6

Java, 81 77 ไบต์

  • -4 ไบต์ขอบคุณ @KevinCruijssen

ลองออนไลน์

boolean f(String s){int l=s.length();return l>0&&s.charAt(l-1)==s.charAt(0);}
  • ผลตอบแทนที่trueว่าพวกเขากำลังเท่ากับมิฉะนั้นfalse, falseสำหรับสตริงที่ว่างเปล่า

Array Version ขนาด 60 ไบต์

boolean f(char[]s){int l=s.length;return l>0&&s[0]==s[l-1];}

ทำไมต้องใช้เวลานานกว่าจะได้ int?
corvus_192

@ corvus_192 อักขระ Unicode สามารถมีขนาด 1-6 ไบต์
Khaled.K

ความแตกต่างระหว่างสองตัวอักษรสามารถมากที่สุดCharcter.MAX_VALUE - Character.MIN_VALUEคือ 65535
corvus_192

@ corvus_192 ฉันเข้าใจแล้วฉันได้แก้ไขแล้วตอนนี้
Khaled.K

1
@KevinCruijssen สุดท้ายs.charAt(l-1)==s.charAt(0)จะบันทึกสองไบต์
JollyJoker


5

brainfuck , 43 ไบต์

+>,[<,[>[->+<<->],]]<[[-]-<]-[----->+<]>--.

ลองออนไลน์!

คำอธิบาย

[>[->+<<->],]วงหลักคือ หลังการวนซ้ำแต่ละครั้งเซลล์ทางด้านขวาของตำแหน่งปัจจุบันคือไบต์แรกของสตริงและเซลล์ทางซ้ายคือความแตกต่างระหว่างอักขระที่จัดการล่าสุดและอักขระแรก <[[-]-<]แปลงผลลัพธ์สุดท้ายเป็น -1 ถ้าไม่ใช่ศูนย์และส่วนที่เหลือจะแปลง -1 และ 0 ถึง 48 และ 49 ("0" และ "1") ตามลำดับ


5

Haskell , 21 ไบต์

cใช้เวลาและผลตอบแทนStringBool

c s=take 1s==[last s]

ลองออนไลน์!

  • ถ้าไม่ได้สำหรับสตริงว่างส่วนนี้จะได้รับ 16 c s=s!!0==last sไบต์ด้วย
  • take 1sให้รายการที่เป็นเพียงองค์ประกอบแรกของsเว้นเสีย แต่sว่างเปล่าซึ่งในกรณีนั้นจะว่างเปล่าด้วย
  • last s จะเกิดข้อผิดพลาดในสตริงว่าง แต่ความเกียจคร้านของ Haskell บันทึกไว้: สตริงที่มีองค์ประกอบเดียวมักจะแตกต่างจากสตริงว่างเสมอโดยไม่ต้องประเมินองค์ประกอบ

5

MATL, 5 ไบต์

&=PO)

ลองที่MATL Online!

คำอธิบาย

       % Implicitly grab input as a string (of length N)
&=     % Perform an element-wise equality check yielding an N x N matrix
P      % Flip this matrix up-down
O)     % Get the last value in the matrix (column-major ordering)
       % Implicitly display the result

ในกรณีที่ต้องจัดการสตริงอินพุตว่างจากนั้นบางอย่างเช่น 8 ไบต์ต่อไปนี้จะใช้ได้

&=POwhO)

วิธีการแก้ปัญหานี้เป็นการเตรียม a 0ไปที่ด้านหน้าของเมทริกซ์ N x N เช่นนั้นสำหรับการป้อนข้อมูลที่ว่างเปล่าเมื่อเมทริกซ์คือ0 x 0ยังคงมี0ค่าที่ถูกจับแล้วโดย0)

ลองใช้ที่MATL Online


วิธีการที่ฉลาดมาก!
Luis Mendo

นอกจากนี้ยังมี 5 5L)d~ไบต์:
Sanchises

2
แค่หัวขึ้น: ทั้งความคิดเห็นและคำตอบของคุณก็จัดการอินพุตว่าง สิ่งนี้ (ในความเห็นของฉันอย่างชัดเจน) ถูกโต้แย้งในความคิดเห็นดังนั้นฉันคาดหวังว่าข้อกำหนดนี้จะเปลี่ยนแปลง อย่างไรก็ตามตามที่ระบุไว้รายการนี้ไม่ถูกต้อง
Sanchises

1
(แน่นอนคุณสามารถtn?&=PO)}Fจัดการกับอินพุตที่ว่างเปล่าไม่แน่ใจว่ามีวิธีที่มีประสิทธิภาพมากกว่านี้หรือไม่)
Sanchises


4

APL (Dyalog) 4 ไบต์

⊃⌽=⊃

ลองออนไลน์!

คำอธิบาย

  =                     Compare
                       The first element of the right argument with
                       The right argument reversed
                        This will return an array of the length of the reversed argument. Each element in the resulting array will be either 0 or 1 depending on whether the element at that position of the reversed argument equals the first element of the original right argument
                        So with argument 'abcda', we compare 'a' with each character in 'adcba' which results in the array 1 0 0 0 1
                       From this result, pick the first element.

นี่คือเหตุผลที่ทำงานกับสตริงที่ว่างเปล่า การประยุกต์ใช้เป็นสตริงว่างส่งกลับพื้นที่ แต่การย้อนกลับสตริงว่างยังคงส่งคืนสตริงว่างดังนั้นการเปรียบเทียบสตริงว่างกับสตริงที่ไม่ว่างเปล่า (ในกรณีนี้) ให้เวกเตอร์ตัวเลขที่ว่างเปล่า และการประยุกต์ใช้เพื่อผลตอบแทนที่ว่างเปล่าเวกเตอร์ตัวเลข ดังนั้นการส่งผ่านผลตอบแทนสตริงที่ว่างเปล่า00


นี่เป็นคำตอบที่ยอดเยี่ยมจริงๆ แต่คำอธิบายของคุณไม่ถูกต้อง มันจะถูกต้องสำหรับ(⊃⌽)=⊃หรือ⊢/=⊃แต่ไม่ได้ให้ผลลัพธ์ที่ถูกต้อง แทนที่จะ⌽=⊃เปรียบเทียบสตริงตรงกันข้ามกับตัวละครเป็นครั้งแรกและจากนั้นก็หยิบองค์ประกอบแรกของที่ หากสตริงว่างเปล่ามันจะสิ้นสุดการเปรียบเทียบช่องว่างกับสตริงว่างซึ่งให้รายการบูลีนที่ว่างซึ่งองค์ประกอบแรก (บังคับ) คือ0- คำตอบที่ถูกต้องสำหรับสตริงว่าง การแสดงออกของคุณเทียบเท่า⊃⊃=⌽เพราะ=เป็นการเปลี่ยนแปลง
อดัม

@ Adámขอบคุณที่ช่วยฉันเห็นความผิดพลาดในคำอธิบายของฉัน
Kritixi Lithos

ไม่เป็นไร ตอนนี้โน้ตของคุณไม่ถูกต้อง ไม่ได้เป็นเช่นเดียวกับ⊃⌽=⊃ (⊃⌽)=⊃มันมีราคาแพงกว่าเพราะมันเปรียบเทียบองค์ประกอบทั้งหมดแทนที่จะเป็นแค่คนแรกและคนสุดท้าย นอกจากนี้มันจะไม่ทำงานหาก OP ใช้ตัวเลขแทนสตริง
อดัม

The first argument reversedThe right argument reversed
อดัม

คุณอาจต้องการอธิบายว่าทำไมการทำงานกับสตริงที่ว่างเปล่า
อดัม

4

Java, 52 43 ไบต์

s->!s.isEmpty()&&s.endsWith(""+s.charAt(0))

ในการทำให้มันใช้งานได้ให้ป้อนสิ่งนี้ลงในฟังก์ชันเช่นต่อไปนี้ที่ทำให้แลมบ์ดา "ไป":

private static boolean f(Function<String, Boolean> func, String value) {
  return func.apply(value);
}

1
คุณสามารถโกนทิ้งได้ 9 ตัวอักษรใช้s.endsWith(""+s.charAt(0))แทนs.charAt(0)==s.charAt(s.length()-1)
SpaceBison

s->""!=s&&s.endsWith(""+s.charAt(0))
JollyJoker

1
@ JollyJoker ที่ใช้งานไม่ได้: ลองป้อนnew String()เข้าไปในแลมบ์ดา มันจะโยนข้อยกเว้น ความหมายอ้างอิงไม่ทำงานที่นี่

2
@KevinCruijssen ผลการลัดวงจรของ && เป็นสิ่งจำเป็นเพื่อหลีกเลี่ยงข้อยกเว้นดัชนีนอกขอบเขตของ charAt (0) สำหรับสตริงว่าง
PunPun1000

4

Ruby, 26 24 ไบต์

บันทึกสองไบต์ด้วย@philomory !

->e{!!e[0]>0&&e[0]==e[-1]}

โพสต์แรกใน codegolf -))


1
ยินดีต้อนรับสู่ PPCG!
Martin Ender

1
ยินดีต้อนรับสู่ PPCG! กอล์ฟครั้งแรกที่ดี ขอให้โชคดีในอนาคต!
Arjun

1
คุณสามารถบันทึก 4 ไบต์เพียงแค่ทำe[0]&&e[0]==e[-1]เพราะถ้าeว่างเปล่าe[0]จะเป็นศูนย์ ที่จริงแล้วลองคิดดูสิมันnilไม่ดีเลยเพราะมันเป็นเรื่องโกหก แต่ไม่ใช่ความเท็จแบบเดียวกับที่การเปรียบเทียบส่งคืน ยังหลังจากเพิ่ม!!คุณยังคงบันทึกอักขระ 2 ตัว
philomory

3

PHP> = 7.1, 23 ไบต์

พิมพ์ 1 เพื่อเท่ากันและไม่มีอะไรถ้าตัวละครที่แตกต่างกัน

<?=$argn[0]==$argn[-1];

3

Swift, 57 ไบต์

var s=readLine()!,a=Array(s.characters);a[0]==a.last ?1:0

แก้ไขรหัส
Leena

ยินดีต้อนรับสู่ PPCG! หลังจากที่มีพื้นที่a.lastจำเป็น?
HyperNeutrino

อย่างใดอย่างหนึ่งฉันสามารถเพิ่มวงเล็บรอบ ๆ a.last หรือฉันสามารถเพิ่มช่องว่างหลังจาก a.last
Leena

3

C #, 38 30 ไบต์

s=>s!=""&&s[0]==s[s.Length-1];

บันทึกแล้ว 8 ไบต์ขอบคุณ @raznagul


1
แทนการตรวจสอบความยาวของเพียงแค่เปรียบเทียบกับs ""นอกจากนี้คุณไม่จำเป็นต้องใช้?:-Operator การใช้&&มีผลเหมือนกัน
raznagul

@raznagul จุดที่ดีขอบคุณฉันไม่สามารถตรวจสอบว่ามันทำงานได้ในขณะนี้ดังนั้นหวังว่ามันจะ! จะไม่มี&ผลเช่นเดียวกันหรือไม่
TheLethalCoder

@TheLeathalCoder: ไม่เพียง&แต่ไม่ทำงาน ด้วย&&การแสดงออกที่สองจะไม่ตรวจสอบถ้าการแสดงออกครั้งแรกเป็นเท็จ ด้วย&นิพจน์วินาทีจะถูกตรวจสอบเสมอและล้มเหลวด้วยIndexOutOfRangeExceptionกรณีทดสอบสตริงที่ว่างเปล่า
raznagul

@raznagul โอ้ใช่ ... สมองผายลม
TheLethalCoder

บางทีมันสายไปนิด แต่คุณสามารถบันทึก 5 ไบต์ถ้าคุณใช้s.Last()แทนs[s.Length-1]
โบ B

3

R, 40 ไบต์

function(x)x>""&&rev(y<-charToRaw(x))==y

ขอบคุณ Nitrodon สำหรับ -2 ไบต์

ขอบคุณ MickyT สำหรับ -8 ไบต์

ทดสอบ:

f=function(x)x>""&&rev(y<-charToRaw(x))==y
test <- c("10h01", "Nothing", "Acccca", "wow!", "wow", "H", "")
sapply(test, f)
all(sapply(test, f) == c(T, F, F, F, T, T, F))

เอาท์พุท:

> f=function(x)x>""&&rev(y<-charToRaw(x))==y
> test <- c("10h01", "Nothing", "Acccca", "wow!", "wow", "H", "")
> sapply(test, f)
  10h01 Nothing  Acccca    wow!     wow       H         
   TRUE   FALSE   FALSE   FALSE    TRUE    TRUE   FALSE 
> all(sapply(test, f) == c(T, F, F, F, T, T, F))
[1] TRUE

2
คุณสามารถลบวงเล็บหนึ่งชุดrev(y<-el(strsplit(x,"")))==yได้
Nitrodon

1
ฟังก์ชั่นที่ไม่มีชื่อก็เป็นที่ยอมรับดังนั้นคุณสามารถลบf=
MickyT

1
และ charToRaw สามารถนำมาใช้เพื่อแยกสตริงสำหรับการเปรียบเทียบfunction(x)x>""&&rev(y<-charToRaw(x))==y
MickyT

3

> <> , 39 33 ไบต์

 2i&01. >~&-?v1v
  i:1+?!^01. >0>n;

นี่เป็นครั้งแรกของฉันทั้งที่ใช้> <> และเล่นกอล์ฟรหัสดังนั้นคำแนะนำที่เป็นประโยชน์จะได้รับการชื่นชม

รหัสอยู่ในสามส่วนพื้นฐาน

2i&01. Pushes an arbitrary number (2 in this case, this causes an empty string to print 0) onto the stack and puts the input's first character in the register.

>i:1+?!^01. Main loop. Pushes the next character onto the stack. If the string has been read completely, then go to the last section

>~&-?v1v
     >0>n;  Compare the first and last characters. Print 1 if they're the same, 0 if not

สวัสดี! ยินดีต้อนรับสู่ PPCG! กอล์ฟครั้งแรกที่ดี! ขอให้โชคดีในอนาคต! :)
Arjun

3

Google ชีต 33 ไบต์

ใช้อินพุตจากเซลล์[A1]และเอาต์พุต1สำหรับอินพุตที่เป็นความจริงและ0สำหรับอินพุตที่เป็นเท็จ

=(A1<>"")*Exact(Left(A1),Right(A1

มันเป็นข้อสังเกตว่า parentheticals ในExact(และRight(ถูกปล่อยให้ไม่มีการเปิดเผยเนื่องจาก Google ชีตแก้ไขโดยอัตโนมัติทันทีที่ผู้ใช้ป้อนข้อความสูตรและกด enter เพื่อออกจากเซลล์นั้น

เอาท์พุต

GS Version


รุ่นของ Excel สำคัญหรือไม่ ในสำเนา 2013 ของฉันสิ่งนี้ล้มเหลวเนื่องจากคุณไม่สามารถใช้งาน&ได้ นอกจากนี้ยังถือว่าA=aเป็นจริง ที่สั้นที่สุดที่ฉันจะได้รับคือ 38 ไบต์: หรือทางเลือก=AND(EXACT(LEFT(A1),RIGHT(A1)),A1<>"") =IFERROR(CODE(A1)=CODE(RIGHT(A1)),1=0)
Engineer Toast

ฉันพยายามมันใน Excel ออนไลน์ (16.0.9222.5051) และจะส่งกลับTRUEสำหรับการใด ๆการป้อนข้อมูลที่ไม่ใช่ข้อผิดพลาด ( ภาพหน้าจอ ) มันทำงานในสำเนาของคุณสำหรับกรณีทดสอบทั้งหมดหรือไม่ ExcelGuy มีคำตอบที่ลงท้ายด้วยของฉันด้านบนด้วยเหตุผลเดียวกัน
Engineer Toast

1
@EngineerToast คุณถูกต้องอย่างสมบูรณ์ฉันควรจะใช้*แทน&ไบนารีและคำสั่ง แต่ยังคงออกจาก"A"="a"ปัญหาซึ่งฉันได้มองข้ามอย่างสมบูรณ์ ทั้งหมดนี้และการแก้ไขไวยากรณ์เล็กน้อยทำให้ฉันเป็น=EXACT(LEFT(A1),RIGHT(A1))*(A1<>"")35 แต่ฉันได้เปลี่ยนภาษาเป็น Google ชีตซึ่งอนุญาตให้ฉันวางเทอร์มินัลสองครั้งที่สอดแทรกอยู่ในExactคำสั่งแสดงผล=(A1<>"")*Exact(Left(A1),Right(A133 ไบต์
Taylor Scott

3

R, 50 43 41 40 64

โซลูชันที่สองที่มีขนาด 41 ไบต์สำหรับฟังก์ชัน callable - ขอบคุณ @ niczky12 & @Giuseppe - แก้ไขเพิ่มเติมสำหรับ x = ""

r=function(x,y=utf8ToInt(x))ifelse(x=="","FALSE",(y==rev(y))[1])

ครั้งแรกกับ 50 ไบต์ แต่ไม่ใช่สำหรับความท้าทาย

function(x){charToRaw(x)[1]==rev(charToRaw(x))[1]}

คุณสามารถแทนที่charToRawด้วยutf8ToIntเพื่อสร้างNAs เมื่อสตริงว่างเปล่า
niczky12

นอกจากนี้คุณยังสามารถลบเครื่องหมายปีกกาหยิก{}รอบ ๆ ตัวฟังก์ชันได้
Giuseppe

ฉันคิดว่า(y==rev(y))[1]byte สั้นกว่า
จูเซปเป้

ความท้าทายนี้ต้องใช้เพียงหนึ่ง Truthy และหนึ่งค่า Falsey แต่นี้ผลิตNAสำหรับสตริงที่ว่างเปล่า แต่สำหรับFALSE ลองออนไลน์! . "ab"
Ørjan Johansen

@ ØrjanJohansenขอบคุณสำหรับความคิดเห็นของคุณดังนั้น "ab" ไม่ควรให้ FALSE?
Riccardo Camon

2

อ็อกเทฟ 16 ไบต์

@(s)s(1)==s(end)

มันจะใช้สตริงsเป็นอินพุตและเปรียบเทียบs(1)องค์ประกอบแรกกับที่ผ่านs(end)มา

นี่อาจเป็นไปได้@(s)s(1)-s(end)ถ้าการสลับtrue/falseไปfalse/trueใช้


2

greu GNUขนาด 12 ไบต์

^(.)(.*\1)?$

ทำงานในโหมด Extended หรือ PCRE

ฉันไม่รู้ว่านี่เป็นการโกงหรือไม่


สิ่งนี้จัดการกับตัวพิมพ์สตริงว่างหรือไม่?
ตบมือ

@ConfusedMr_C อ๋อสตริงว่างเปล่า⇒รหัส 1
eush77

2

JavaScript ขนาด 20 ไบต์

เพิ่ม f=f(arg)ที่จุดเริ่มต้นและเรียกเช่น

_=>_[0]==_.slice(-1)

f=_=>_[0]==_.slice(-1)

i.oninput = e => o.innerHTML = f(i.value);
<input id=i><pre id=o></pre>

คำอธิบาย

_ฟังก์ชั่นนี้จะใช้เวลาในการโต้แย้ง ในฟังก์ชั่นร่างกาย_[0]==_.slice(-1)ตรวจสอบว่าองค์ประกอบแรกของ_(ที่0ดัชนี th) เท่ากับองค์ประกอบสุดท้ายของมันและส่งกลับค่าที่เหมาะสมtrueหรือfalseบูลีน



2

เสียงกระเพื่อมสามัญ83 74 61 58 ไบต์

เดิม: 83 ไบต์

ฉันเพิ่งเริ่มเรียนรู้ Common LISP ดังนั้นฉันรู้สึกว่าฉันกำลังนำพัตเตอร์ไปที่สนามฝึกซ้อม ต้องมีตัวช่วยสร้างแมโครแบบเรียกซ้ำหรือการจัดการอาเรย์เป็นไปได้ที่นี่ที่ฉันไม่เห็น

นี่เป็นฟังก์ชั่นนิรนามที่ยอมรับสตริงเป็นอินพุต:

(lambda (s) (let ((n (- (length s) 1))) (when (> n 0) (eq (char s 0) (char s n)))))

prettified:

(lambda (s)
  (let ((n (- (length s) 1)))
    (when (> n 0)
      (eq (char s 0)
          (char s n)))))

ชอบที่จะเห็นวิธีการสั่นไหว!

รุ่นที่ 1: 74 ไบต์

ต้องรักฟังก์ชั่นห้องสมุดมาตรฐานเหล่านั้น!

น่าเกลียด:

(lambda (s) (when (> (length s) 0) (eq (elt s 0) (elt (reverse s) 0))))

น่ารัก:

(lambda (s)
  (when (> (length s) 0)
    (eq (elt s 0)
        (elt (reverse s) 0))))

รุ่นที่ 1.5: 61 ไบต์

ช่องว่าง!

(lambda(s)(when(>(length s)0)(eq(elt s 0)(elt(reverse s)0))))

รุ่นที่ 2: 58 ไบต์

น่าเกลียด:

(lambda(s)(and(>(length s)0)(not(mismatch s(reverse s)))))

น่ารัก:

(lambda (s)
  (and (> (length s) 0)
       (not (mismatch s (reverse s)))))

นั่นคือทั้งหมดที่สำหรับตอนนี้! ฉันคิดว่าฉันฉลาดขึ้นแล้ว


1
แนะนำifแทนandและ(mismatch(reverse s)s)แทนที่(mismatch s(reverse s))
แมวป่า

2

AWK, 29 34 ไบต์

อันนี้อาจจะโกงนิดหน่อยเพราะมันต้องมีการเรียกใช้ AWK ด้วยตัวเลือก:

`-F ''`

ใน GNU Awk คุณสามารถใช้คำพ้องความยาวแบบ:

`--field-separator=''`

ดังนั้นฉันจึงเพิ่ม 5 ไบต์ไปยังผลรวมเพื่อการนี้

น่าเกลียด:

NR==1{a=$1}END{print(a==$NF)}

น่ารัก:

NR == 1
{
    a = $1
}

END
{
    print(a == $NF)
}

1
ฉันเชื่อว่ากฎคือคุณสามารถใช้ค่าสถานะ / ตัวเลือก แต่คุณต้องรวมไว้ในจำนวนไบต์
Ørjan Johansen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.