ฉันชื่อทางการ


25

บทนำ

ดังที่ ToonAlfrink กล่าวว่า : "ฉันคิดว่ามีคำถามง่าย ๆ ไม่เพียงพอที่ผู้เริ่มต้นสามารถลองได้!" ดังนั้นงานง่ายมาก รับค่าสตริงส่งออกค่าจริงหรือเท็จไม่ว่าชื่อจะเป็นทางการหรือไม่ก็ตาม

ชื่อคือ "เป็นทางการ" หากเป็นคำตัวพิมพ์ชื่อเดียวนั่นคือ:

  • ถ้าครั้งแรกตัวอักษรเป็นตัวพิมพ์ใหญ่ (ไม่เป็นทางการ: adnan)
  • ถ้าตัวอักษรอื่น ๆ จะไม่ได้ทุน (ไม่เป็นทางการ: AdNaN)
  • หากชื่อไม่มีอักขระที่ไม่ใช่ตัวอักษร (ไม่ใช่เป็นทางการ: Adnan123, Adnan!)
  • หากชื่อนั้นมีเพียงหนึ่งคำ (ไม่ใช่เป็นทางการ: Adn an, Adn An)
  • ถ้าชื่อที่มีมากกว่าหนึ่งตัวอักษร (ไม่เป็นทางการ: A)

กฎระเบียบ

  • คุณอาจมีฟังก์ชั่นหรือโปรแกรม
  • นี่คือดังนั้นการส่งที่มีจำนวนไบต์น้อยที่สุดจะชนะ!
  • หมายเหตุ:เพื่อลดความซับซ้อนของสิ่งต่าง ๆ ชื่อเช่น Mary-Ann อยู่ในการท้าทายนี้ไม่ใช่เป็นทางการ
  • สมมติว่าไม่มีช่องว่างนำหน้าในชื่อ
  • สมมติว่าใช้อักขระ ASCII ที่พิมพ์ได้ ( 32-126) เท่านั้นในชื่อ

กรณีทดสอบ

Input: Adnan
Output: True

Input: adnan
Output: False

Input: AdnaN
Output: False

Input: Adnan123
Output: False

Input: Adnan Adnan
Output: False

Input: A
Output: False

Input: Mary-Ann
Output: False

ลีดเดอร์บอร์ด


5
ดังนั้นชื่อของฉันไม่เป็นทางการ? ฉันควรที่จะเปลี่ยนแปลงมันแล้ว
ETHproductions

12
@ETHproductions ถ้าเราใช้ตรรกะนี้Lolololololololololololเป็นชื่ออย่างเป็นทางการ :)
Adnan

1
นั่นไม่ได้ตอบคำถามจริงๆ ข้อใดคือ: "คุณอาจถือว่าชื่อไม่มีตัวอักษรที่เน้นเสียง" หรือ "ชื่อที่มีตัวอักษรที่เน้นเสียงควรให้False"
ลินน์

1
ในฐานะที่เป็นนักพูดนอกเรื่องชาวแคนาดาที่ผิดปรกติเล็กน้อยอาจารย์ฉันรู้ว่าจะไม่พอใจกับเกณฑ์ "ทางการ" ของคุณ: Robert Smith? . จริง ๆ แล้วชื่อของเขามีเครื่องหมายคำถามนั้น นอกจากนี้Sahaiʔa
Iwillnotexist Idonotexist

1
@FarhanAnam ใช่
Adnan

คำตอบ:


6

Pyth, 16 13 12 ไบต์

ขอบคุณ @Thomas Kwa ที่เตือนฉันเกี่ยวกับ titlecase

&qzr@GrzZ3tz

Test Suite

&              Boolean and operator
 qz            Equality test on input
  r    3       Titlecase operator
   @G          Setwise intersection with the alphabet
    rzZ        Input to lowercase
 tz            All but the first character of the input

21

เรติน่า 13 ไบต์

^[A-Z][a-z]+$

ลองใช้ออนไลน์ | ชุดทดสอบ (ผลลัพธ์0หมายถึงไม่มีสตริงที่ตรงกับที่คาดไว้)

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

ทำให้พังถล่ม

^       The beginning of the string
[A-Z]   One uppercase letter
[a-z]+  One or more lowercase letters
$       The end of the string

8
ดูเหมือนว่าเราต้องการคลาสตัวอักษรสำหรับตัวอักษร ;)
Martin Ender

10

TeaScript ขนาด 12 ไบต์

xO`A-Z][a-z`

ใช้Oฟังก์ชันในทางที่ผิด

ลองออนไลน์

ชุดทดสอบ

คำอธิบาย

Oฟังก์ชั่นนี้จะทำให้:

x O   `A-Z][a-z`
x.O(/^[A-Z][a-z]+$/)

จากนั้นฟังก์ชัน O จะตรวจสอบว่า regex ตรงกันxหรือไม่


อีกทางเลือกหนึ่งคือ TeaScript 3 ที่ไม่ได้แข่งขันกันตอบที่7 ไบต์ :

xO/\A\a

Ahahaha คนดี เมื่อถึงจุดหนึ่งในขณะที่ฉันกำลังทำงานกับล่าม Japt ฉันใช้เคล็ดลับนี้กับisCharฟังก์ชั่นที่คุณเพิ่ม แต่คุณอาจต้องการอธิบายรายละเอียดเพิ่มเติมสำหรับผู้ที่ไม่ทราบ
ETHproductions

Ooooooh ฉันชอบคุณสมบัติใหม่ของ regex!
ETHproductions

7

JavaScript (ES6), 26

n=>/^[A-Z][a-z]+$/.test(n)

โดย: Edcsixtyfive

f=n=>/^[A-Z][a-z]+$/.test(n)

console.log=x=>O.textContent+=x+'\n'

;['Adnan','adnan','AdnaN','Adnan123','Adnan Adnan','A','Mary-Ann']
.forEach(t=>console.log(t+' '+f(t)))
<pre id=O></pre>


Darn คุณเอาชนะฉันไปที่มัน คุณยังรุ่นของฉันสูงกว่า 5 ไบต์
SuperJedi224

1
น้อยกว่าหนึ่งไบต์:n=>n.match`^[A-Z][a-z]+$`
81655

@ user81655 อาร์เรย์เป็นค่าความจริงถูกบังคับเกินไป IMHO
edc65

@ edc65 มันถูกต้องแม้ว่า
SuperJedi224

1
สำหรับ 4 ไบต์เท่านั้นคุณจะได้รับการปฏิบัติตาม ES5:/./.test.bind(/^[A-Z][a-z]+$/)
CR Drost

7

Python ขนาด59 58 ไบต์

ฉันแน่ใจว่าไม่มีทางที่จะเอาชนะรุ่น Retina ได้จริง ๆ เพราะนี่เป็นเพียงแค่ใน Python แต่ฉันคิดว่านี่คือการส่งครั้งแรกของฉัน;)

import re,sys;print(re.match('[A-Z][a-z]+$',sys.argv[1]))

มันเป็นค่าความจริงที่แปลกมาก:

(test2)wayne@arglefraster ~/programming/inactive/golf/67554
⚘ python golf.py AdNan                                                                                                 $? 148  %# 3  10:06:36
None
(test2)wayne@arglefraster ~/programming/inactive/golf/67554
⚘ python golf.py Adnan                                                                                                         %# 3  10:06:40
<_sre.SRE_Match object at 0x7feefea7f440>
(test2)wayne@arglefraster ~/programming/inactive/golf/67554
⚘ python golf.py "Adnan Banana"                                                                                                %# 3  10:06:47
None

(และมันจำเป็นต้องมี""รอบสตริงที่มีช่องว่างในนั้นถ้าผ่านผ่านเชลล์)


1
^ไม่จำเป็นต้องre.match()มีเพียงการจับคู่ที่จุดเริ่มต้นของสตริง
จัดการ

1
@ การจัดการที่ดี! ไบต์อื่นถูกโกน :) ฉันสามารถบันทึกอีกไบต์ด้วย paren ปิดโดยใช้ Python2
Wayne Werner

1
@WayneWerner: นั่นเป็นเหตุผลที่คุณควรให้รุ่น Python :) ฉันคิดว่า Python 2 และ Python 3 เป็นภาษาที่แตกต่างกันอย่างน้อยก็เป็น codegolf
movatica

หากคุณใช้แลมบ์ดานิรนามแทนโปรแกรมทั้งหมดคุณจะได้ 45 ไบต์:lambda s:re.match('[A-Z][a-z]+$',s) import re
movatica

1
@movatica โอ้โห!
MilkyWay90


4

Python, 50 45 43 41 ไบต์

lambda s:s.isalpha()*s.istitle()*len(s)>1

ส่งคืนTrueถ้าเป็นชื่ออย่างเป็นทางการหรือFalseไม่ใช่


กฎของ codegolf สถานะที่คุณไม่จำเป็นต้องคำนึงf=ถึงการบันทึกสองไบต์ นอกจากนี้ยัง(len(s)>1)ช่วยประหยัด 5 s[1:].islower()ไบต์มากกว่า :)
movatica

3

BotEngine , 203 180 29x6 = 174

v ABCDEFGHIJKLMNOPQRSTUVWXYZ
>ISSSSSSSSSSSSSSSSSSSSSSSSSSF
v <<<<<<<<<<<<<<<<<<<<<<<<<<
 Tabcdefghijklmnopqrstuvwxyz
> SSSSSSSSSSSSSSSSSSSSSSSSSSF
^E<<<<<<<<<<<<<<<<<<<<<<<<<<

ฉันควรเพิ่ม builtins เพื่อระบุตัวอักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก นั่นจะกระชับกว่าการตรวจสอบจดหมายแต่ละฉบับ

การแปลหยาบ:

for a of input enqueue a
if ABCDEFGHIJKLMNOPQRSTUVWXYZ contains first
 remove first
 while abcdefghijklmnopqrstuvwxyz contains first
  remove first
 if empty
  yield TRUE exit
 else
  yield FALSE exit
else
 yield FALSE exit

3

C, 129 122 121 111 ไบต์

main(c,b,d){b=d=0;while((c=getchar())>13)b|=b|=!b&&c>90|c<65?1:2&&d++&&c<97|c>122?4:2;printf("%d\n",b<3&&d>1);}

ลองใช้ออนไลน์

main(c,b,d)
{
    b=d=0;
    while((c=getchar())>13)
    {
        // Twiddle bits, 1<<0 for first character and 1<<3 for subsequent
        b|=!b&&c>90|c<65?1:2; // check first character is valid
        b|=d++&&c<97|c>122?4:2; // check later characters are valid
    }
    // If all OK b == 2, if either of above are wrong, b >= 3 due to 
    // extra bits. Also, d should be > 1 for name length to be valid.
    printf("%d\n",b<3&&d>1);
}


2

MATL , 18 ไบต์

ใช้เวอร์ชันปัจจุบัน ( 4.0.0 ) ของภาษา

นี่ใช้การแสดงออกปกติเช่นเดียวกับคำตอบของ NinjaBearMonkey :

j'^[A-Z][a-z]+$'XX

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

ตัวอย่าง

>> matl
 > j'^[A-Z][a-z]+$'XX
 > 
> December
December
>> 

>> matl
 > j'^[A-Z][a-z]+$'XX
 > 
> ASCII
>> 

2

Haskell, 61 ไบต์

f(h:t@(_:_))=elem h['A'..'Z']&&all(`elem`['a'..'z'])t
f _=1<0


ลงอีกหลายอย่าง คุณสามารถใช้เทคนิคนั้นสำหรับการทดสอบอื่นเพื่อให้มีประสิทธิภาพมากขึ้น แต่มีจำนวนไบต์เท่ากัน
dfeuer


2

Ruby, 28 ไบต์

p (gets=~/^[A-Z][a-z]+$/)!=p

-2 ไบต์ (ขอบคุณการจัดการ)


ลองดูที่Fábioเปเรซ 's pเคล็ดลับที่เกี่ยวข้องในเคล็ดลับสำหรับการเล่นกอล์ฟในรูบี
จัดการ

ง่ายขึ้นและสั้นลง: p !!gets[/^[A-Z][a-z]+$/]
daniero

2

รหัสเครื่อง IA-32 ขนาด 19 ไบต์

ฟังก์ชั่นที่ได้รับการชี้ไปยัง null สตเปี๊ecxและส่งกลับ 0 หรือ 1 ในeax(ตามfastcallประชุม)

Hexdump ของรหัส:

6a 20 58 32 01 74 0a 41 2c 61 3c 1a b0 00 72 f3 c3 40 c3

ในภาษาแอสเซมบลี:

    push 32;
    pop eax;

myloop:
    xor al, [ecx];
    jz yes;
    inc ecx;
    sub al, 'a';
    cmp al, 26;
    mov al, 0;
    jb myloop;
    ret;

yes:
    inc eax;
    ret;

ไบต์แรกของชื่ออินพุตมีบิตที่ 5 พลิก ( xorพร้อม32) เพื่อแปลงจากตัวพิมพ์ใหญ่เป็นตัวพิมพ์เล็ก สิ่งนี้จะโหลด 32 เข้าeaxโดยใช้รหัส 3 ไบต์:

    push 32;
    pop eax;

วิธีตรวจสอบว่าไบต์เป็นอักษรตัวเล็กหรือไม่:

    sub al, 'a';
    cmp al, 26;
    jb myloop;

หากไม่มีรหัสนี้จะผ่าน หากต้องการส่งคืน 0 ในกรณีนี้มันจะใส่ 0 alก่อนที่จะทำการกระโดดตามเงื่อนไข

    sub al, 'a';
    cmp al, 26;
    mov al, 0;
    jb myloop;

0 ในalยังทำหน้าที่เป็น xor-mask (หรือไม่มี) สำหรับไบต์ต่อไปนี้ของชื่ออินพุต

ทางออกที่ประสบความสำเร็จคือเมื่อพบศูนย์ไบต์ซึ่งยังคงเป็นศูนย์หลังจากxor:

    xor al, [ecx];
    jz yes;

สันนิษฐานว่าชื่ออินพุตไม่ว่างเปล่า ฉันเดาว่าเป็นข้อสมมติฐานที่สมเหตุสมผลเกี่ยวกับชื่อ (ไม่ใช่สตริงที่กำหนดเอง)!


2

grep, 16 ไบต์

นี่คือรูปแบบ:

[A-Z][a-z]+

หากคุณใช้-Eและ-xและ-cสวิตช์grepจะพิมพ์จำนวนบรรทัดอินพุตที่ตรงกัน ถ้าคุณให้หนึ่งบรรทัดคุณจะได้ 1 หรือ 0 ฉันคิดว่านั่นเป็นวิธีที่สถานที่นี้ใช้งานได้

รูปแบบคือ 11 ตัวอักษรบรรทัดคำสั่งทั้งหมดคือ 23 ฉันเคยเห็นคนใช้sedสคริปต์โดยไม่มีคำสั่งดังนั้นฉันไม่รู้ว่าอะไรคืออะไร แต่มันอ่าน stdin และคุณก็สามารถพิมพ์มันได้ ที่นี่echo:

for a in Adnan adnan Ad\ nan
do  echo "$a" | grep -cxE \[A-Z]\[a-z]+
done

1
0
0

@ Doorknob - ดูเหมือนยุติธรรมพอสำหรับฉัน ขอบคุณมาก ๆ. คุณเดาหมวกอะไร
mikeserv

1
ฉันพบการแก้แค้นของ Hairboat : P
Doorknob

หยุดฉันถ้า (เป็นไปได้ค่อนข้างมาก) ฉันผิด แต่คุณสามารถใช้งานได้grep -Excดังนั้นคุณไม่จำเป็นต้องนับจำนวนไบต์สำหรับสวิตช์
Neil

@ Neil - ฉันไม่ชอบถ้าคุณผิด ฉันไม่มีความคิด - ลองดูที่ประวัติการแก้ไข
mikeserv

2

Mathematica 10.1, 46 ไบต์

LetterQ@#&&#==ToCamelCase@#&&StringLength@#>1&

ใช้หนึ่งไบต์น้อยกว่าโซลูชัน regex มาตรฐาน มันตรวจสอบสามครั้ง LetterQ@#ตรวจสอบให้แน่ใจว่าสตริงนั้นประกอบด้วยตัวอักษรทั้งหมดและStringLength@#>1ทำให้สตริงตัวอักษรเดี่ยวใช้ไม่ได้ #==ToCamelCase@#ทำให้รู้สึกน้อยลง ToCamelCaseเป็นฟังก์ชั่นที่ไม่มีเอกสารฉันพบว่าใช้สตริงการป้อนข้อมูล AndOutputsItLikeThis เนื่องจากมีเพียงหนึ่งคำมันจะใช้อักษรตัวแรกเป็นตัวพิมพ์ใหญ่ดังนั้นเราจึงตรวจสอบว่าสตริงเท่ากับหรือไม่


คือToCamelCaseใหม่ใน 10.3? ดูเหมือนจะไม่ทำงานใน 10.2
เมอร์ฟี

@urphy มันใช้งานได้กับฉันใน 10.1 คุณได้ToCamelCase["foo bar baz"]อะไรจาก
LegionMammal978

ตกลงฉันสามารถยืนยันได้ว่าใช้งานได้ใน 10.1 อย่างไรก็ตามใน 8.0, 9.0, 10.0 และ 10.2 ฟังก์ชั่นไม่ได้ถูกกำหนด (กรณีทดสอบของคุณกลับมาToCamelCase[foo bar baz]) แปลก! บางทีใครบางคนสามารถตรวจสอบ 10.3?
เมอร์ฟี่

2

bash / zsh / ksh, 25 ไบต์

[[ $1 =~ ^[A-Z][a-z]+$ ]]

หากต้องการใช้สิ่งนี้ให้สร้างไฟล์โดยใช้เป็นบรรทัดเดียวและทำให้สามารถเรียกใช้ไฟล์ได้ ไฟล์เรียกทำงานที่ไม่รู้จักซึ่งเป็นชนิดไบนารีที่รู้จักจะถูกใช้เป็นเชลล์สคริปต์ (สำหรับ/bin/shโดยเฉพาะ)

$ printf '[[ $1 =~ ^[A-Z][a-z]+$ ]]' >f
$ chmod +x f
$ wc -c f
25 f
$ for x in 'Adnan' 'adnan' 'AdnaN' 'Adnan123' 'Adnan Adnan' 'A' 'Mary-Ann'; do f "$x" && echo 1 || echo 0; done
1
0
0
0
0
0
0
$ 

2
นี้ทำงานได้ดีในbash, kshและzshแต่มีโอกาสที่จะทำงานในมาตรฐาน POSIX ไม่มีshหรือเข้ากันได้และdash yashเพื่อหลีกเลี่ยงความสับสนฉันแนะนำให้เปลี่ยนชื่อของคำตอบ
จัดการ

3
ใช้printfแทนechoการสร้างไฟล์และคุณจะได้ 25 ไบต์
sam hocevar

จุดที่ดีทั้งคุณ; ใช้ทั้ง
Aaron Davies

2

C # 4, 89 ไบต์

ความพยายามครั้งแรกของฉันที่ Code Golf ที่นี่มันมา:

bool o(string i){return System.Text.RegularExpressions.Regex.IsMatch(i,"^[A-Z][a-z]+$");}

เห็นมันในการกระทำที่Dot Net ซอ


หากคุณใช้ C # 6 คุณสามารถทำให้สั้นลงได้เล็กน้อย:bool o(string i)=>System.Text.RegularExpressions.Regex.IsMatch(i,"^[A-Z][a-z]+$");
ProgramFOX

2

Java, 28 ไบต์

n->n.matches("[A-Z][a-z]+")

ใช้ regex เพื่อให้แน่ใจว่าสตริงประกอบด้วยอักขระตัวพิมพ์ใหญ่ตามด้วยอักขระตัวพิมพ์เล็กอย่างน้อยหนึ่งตัว

-1 ไบต์ขอบคุณ Benjamin Urquhart


คุณสามารถวางอัฒภาคได้
Benjamin Urquhart

@BenjaminUrquhart โอ้ใช่แล้วขอบคุณ
HyperNeutrino

1

k4, 39 ไบต์

{((*x)in .Q.A)&(&/(1_,/x)in .Q.a)&1<#x}

ถ่านตัวแรกอยู่ด้านบนส่วนอื่น ๆ ต่ำกว่านับมากกว่าหนึ่ง

เช่น:

  {((*x)in .Q.A)&(&/(1_,/x)in .Q.a)&1<#x}'("Adnan";"adnan";"AdnaN";"Adnan123";"Adnan Adnan";"A";"Mary-Ann")
1000000b

1

อย่างจริงจัง 16 ไบต์

ú4,nÿ=)l1<)ù-Y&&

ฐานสิบหก:

a3342c6e983d296c313c29972d592626

ลองใช้ออนไลน์

อย่างจริงจังยังไม่มีการสนับสนุน regex ดังนั้นสิ่งที่ดีที่สุดที่เราทำได้คือ:

 4,n                               Push 4 copies of input
    ÿ=                             Check that it's equal to itself converted to titlecase
      )                            Put the boolean on the bottom
       l1<                         Check that it's longer than 1 character
          )                        Put the boolean on the bottom
           ù                       Convert it to lowercase.
ú           -Y                     Check that removing the lowercase alphabet empties it
              &&                   And all the booleans together

1

Ocaml, 231 216 197 166 ไบต์

let f n=let l=String.length n in if l=1 then 0 else let rec e=function 0->1|i->match n.[i] with('a'..'z')->e(i - 1)|_->0 in match n.[0]with('A'..'Z')->e(l - 1)|_->0;;

ตัวอย่างการใช้งาน:

# f "Adnan";;
- : int = 1

# f "adnan";;
- : int = 0

# f "AdnaN";;
- : int = 0

# f "Adnan123";;
- : int = 0

# f "Adnan Adnan";;
- : int = 0

# f "A";;
- : int = 0

# f "Mary-Ann";;
- : int = 0

Ungolfed (พร้อมชื่อฟังก์ชั่นจริง):

let is_name name =
  let len = String.length name
  in if len = 1 then 0 else
  let rec explode_lower = function
    | 0 -> 1
    | i ->
      match name.[i] with
      | ('a'..'z') -> explode_lower (i - 1)
      | _ -> 0
  in match name.[0] with
  | ('A'..'Z') -> explode_lower (len - 1)
  | _ -> 0;;

จริงๆคุณสามารถประหยัดประมาณ 10% โดยใช้ booleans แทนจำนวนเต็ม (bleh!) และการเปลี่ยนขนาดใหญ่เหล่านั้นโดยif … then 0 else … ||และสำหรับเรื่องนั้นโดยใช้โอเปอเรเตอร์บูลีนแทนmatchและช่วงเช่นn.[0]>'@'&n.[0]<'['&e(l-1)
Gilles 'ดังนั้น - หยุดความชั่วร้าย'

1

SpecBAS - 39 ไบต์

SpecBAS จัดการการแสดงออกปกติผ่านMATCHคำสั่ง เอาต์พุตเป็น 0 สำหรับเท็จและ 1 ถ้าเป็นจริง

1 input n$:  ?MATCH("^[A-Z][a-z]+$",n$)

1

สวิฟท์ 2, 116 ไบต์

Regex มีความละเอียดมากใน Swift ที่ทำสิ่งนี้สั้นกว่ามาก

func e(s:String)->Int{var c=0;for k in s.utf8{if(c==0 ?k<65||k>90:k<97||k>122){return 0};c++};return s.utf8.count-1}

นี้จะส่งกลับ0หรือ-1(ในกรณีที่ไม่มีการป้อนข้อมูล) สำหรับชื่อที่ไม่เป็นทางการและจำนวน> 0(ซึ่งเท่ากับความยาวของสตริง - 1) ถ้าชื่อเป็นทางการ

Ungolfed

func e(s: String) -> Int{
    var c = 0
    for k in s.utf8{
        if(c == 0 ? k < 65 || k > 90 : k < 97 || k > 122){
            return 0
        }
        c++
    }
    return s.utf8.count - 1
}

1

C #, 188 ไบต์

การแสดงออกปกติน่าจะเป็นวิธีที่ถูกต้องในการแก้ไขปัญหานี้ แต่นี่เป็นความพยายามโดยปราศจากมัน

bool O(string s){for(int i=1;i<s.Length;i++){if(char.IsUpper(s[i])){return false;}}if(char.IsUpper(s[0])&&s.All(Char.IsLetter)&&!s.Contains(" ")&& s.Length > 1){return true;}return false;}

ตัวหนังสือ

static bool O(string s)
{
    for (int i = 1; i < s.Length; i++)
    {
        if (char.IsUpper(s[i]) )
        {
            return false;
        }
    }
    if (char.IsUpper(s[0]) && s.All(Char.IsLetter) && !s.Contains(" ") && s.Length > 1)
    {
        return true;
    }
    return false;
}

จะรักคำแนะนำเกี่ยวกับวิธีการตรวจสอบตัวพิมพ์เล็กให้สั้นลง ฉันเพิ่งเริ่มเรียนรู้ภาษาและใช้สิ่งนี้เป็นแบบฝึกหัดคิดว่าฉันจะแบ่งปันผลการเรียนของฉันต่อไป





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