ค้นหาคำที่ยาวที่สุดในอาเรย์


24

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

["tiny", "small", "bigger", "biggest"]

biggestการส่งออกจะเป็น

หากสององค์ประกอบของอาร์เรย์มีความยาวเท่ากันคุณควรเลือกองค์ประกอบที่ปรากฏขึ้นเป็นลำดับแรกในอาร์เรย์ นั่นหมายความว่าถ้าอาร์เรย์มีลักษณะดังนี้:

["one", "two", "no"]

ผลลัพธ์คือoneแต่ถ้าอาร์เรย์มีลักษณะเช่นนี้:

["two", "one", "no"]

twoผลลัพธ์คือ


เช่นนี้คือรหัสที่สั้นที่สุดเป็นไบต์จะเป็นผู้ชนะ


3
2 หมายเหตุ: 1มันท้อแท้อย่างมากหากคำถามที่มีการเปลี่ยนแปลงและเลิกคำตอบที่มีอยู่และSandboxที่มีอยู่สำหรับว่าที่เหตุผล (ทำให้ความท้าทายแน่ใจว่าเป็นสิ่งที่ดีก่อนที่จะโพสต์)2
user202729

4
เนื่องจากฉันไม่คิดว่ามีใครพูดถึงมัน - สวัสดีและยินดีต้อนรับสู่ PPCG!
AdmBorkBork

1
ไม่คุณไม่ต้องจัดการกับกรณีที่อาร์เรย์ว่างเปล่า แต่ถ้าคุณต้องการคุณสามารถ
Doggo

4
2 ชั่วโมง? ว่าห่างไกลไกลอย่างรวดเร็วเกินกว่าที่จะยอมรับคำตอบ
Shaggy

6
โดยปกติคุณรอหนึ่งสัปดาห์
คริสโตเฟอร์

คำตอบ:


31

Tampio ที่จำเป็น , 168 ไบต์

Listan x on riippuen siitä,onko sen ensimmäisen alkion pituus suurempi tai yhtä suuri kuin sen jokaisen alkion pituus,joko sen ensimmäinen alkio tai sen hännän x.

เวอร์ชั่นออนไลน์

Ungolfed:

รายชื่ออัลคาไลน์ pisin บน riippuen siitä , onko sen ensimmäisenalkion pituus suurempi tai yhtä suuri kuin sen jokaisen alkion pituus, joko

  • sen ensimmäinenalkio tai
  • sen hännän pisin alkio

เวอร์ชั่นออนไลน์

โอกาสเดียวเล่นกอล์ฟแห่งนี้คือการเปลี่ยนpisin alkio(หมายถึง "องค์ประกอบที่ยาวที่สุด") xด้วย

แปล:

รายการที่ยาวที่สุดในรายการขึ้นอยู่กับว่าความยาวของรายการแรกมากกว่าหรือเท่ากับความยาวของแต่ละองค์ประกอบในรายการ

  • รายการแรกในรายการหรือ
  • รายการที่ยาวที่สุดในส่วนท้ายของรายการ

21
นี่คือ -... thi -... คุณเป็นอย่างไร -.... อะไร
auhmaan

3
Google แปลภาษาจากฟินแลนด์: รายการของ x ขึ้นอยู่กับว่าความยาวขององค์ประกอบแรกที่มากกว่าหรือเท่ากับความยาวของแต่ละองค์ประกอบไม่ว่าจะเป็นรายการแรกหรือส่วนท้ายของ x
อดัม

2
@ Adámฉันเคยคิดว่า APL อ่านยาก เห็นได้ชัดว่าสิ่งที่คุณต้องเอาชนะนั่นคือการย้าย gamefield เป็นภาษาที่ภาษาอังกฤษเป็นสิ่งที่หายาก
Uriel

3
ต้องการ COBOL, AppleScript หรือแจ้ง 7 ใคร ใครต้องการอาร์โนลด์เชฟหรือเช็คสเปียร์? คุณมี Tampio ที่จำเป็น! โอ้สัตว์ประหลาดปาเก็ตตี้ที่บินได้ของฉันฟินแลนด์ทุกภาษา? ฉันไม่ได้เรียนรู้ว่าเร็ว ๆ นี้ ...
.

1
@fedes คุณสามารถพูดว่า "Olkoon suomalainen suudelma uusi suudelma" (ขอให้ชาวฟินแลนด์จูบเป็นจูบใหม่มันสร้างวัตถุจูบใหม่)
fergusq

20

Pythonขนาด 23 ไบต์

lambda a:max(a,key=len)

ลองออนไลน์!


1
ฉันขอโทษที่ฉันไม่ได้แปลงสิทธินี้
Doggo

1
ฉันอัปเดตข้อมูลโค้ด แต่ขณะที่เขียนจะสามารถใช้ฟังก์ชันนี้ได้แล้ว
Neil

1
สิ่งนี้จะทำงานไม่เปลี่ยนแปลงใน Python 3
anonymoose

17

Haskell , 35 ไบต์

-3 ไบต์ขอบคุณ Zgarb

foldl1(!)
a!b|(a<$a)<(a<$b)=b|1<2=a

ลองออนไลน์!

ฉันชอบรหัสนี้ คุณรู้ว่าทำไม? เนื่องจาก Haskell สนับสนุนโซลูชันที่หรูหรากว่าพร้อมฟังก์ชันจากไลบรารีแบบสุ่ม

maximumBy(compare`on`length).reverse

นั่นคือ friggin 'อ่านได้! ยกเว้นมันไม่ถูกต้อง

import Data.List
import Data.Function
maximumBy(compare`on`length).reverse

หากไม่ใช่เพื่อการนำเข้านี่จะเป็นการส่งที่สมบูรณ์แบบเพื่อรับ upvotes ทั้งหมด : P

(นอกจากนี้ยังใช้เคล็ดลับการเล่นกอล์ฟเดียวและใช้การพับ)


2
ความงามนี้น่าจะใช้ได้: snd.maximum.map((,)=<<(0<$)) ลองออนไลน์! .
Laikoni

1
เพียงสำหรับการอ้างอิง: มีน่าเบื่อ 29 import Data.Lists;argmax(0<$)ไบต์ในตัว
nimi

1
ว้าวส่วนที่lไม่ได้เป็นfoldอย่างไร มันแยกความแตกต่างระหว่างสิ่งนั้นกับฟังก์ชั่นที่ตั้งชื่อfoldlอย่างไร
12Me21

1
@ 12Me21 foldl1มันเป็นส่วนหนึ่งของชื่อฟังก์ชั่น ฉันคิดว่าคำอธิบายส่วนหนึ่งอาจจะสับสนขอโทษ ...
สิ้นเชิงมนุษย์

1
35 ไบต์พร้อมฟังก์ชันแทนแลมบ์ดา น่าสนใจคุณต้องแทนที่0ด้วยaหรืออย่างอื่นมิฉะนั้น GHC จะบ่นเกี่ยวกับประเภทตัวเลขที่ไม่ชัดเจน
Zgarb

9

R + pryr , 31 ไบต์

[-2 ไบต์ขอบคุณ Scrooble]

pryr::f(x[order(-nchar(x))][1])

ลองออนไลน์!


R , 33 ไบต์

function(x)x[order(-nchar(x))][1]

ลองออนไลน์!


3
ขนาด 33 ไบต์:x[which.max(nchar(x))]
จูเซปเป้

@Scrooble จากลิงก์ของคุณฉันเห็นโซลูชัน 33 ไบต์
NofP

1
@NofP ฮ่าฮ่าโง่ฉัน 31 ไบต์
Khuldraeseth na'Barya

8

Excel, 36 42 ไบต์

=INDEX(A:A,MATCH(MAX(LEN(A:A)),LEN(A:A),))

ป้อนเป็นสูตรอาร์เรย์ (ctrl-shift-enter) อาเรย์อินพุตควรถูกป้อนในคอลัมน์ A

สูตรส่งคืนคู่แรกที่มีความยาวสูงสุด

ขึ้นอยู่กับการตั้งค่าภูมิภาคของคุณแทนที่,ด้วย;; ความยาวรหัสยังคงไม่เปลี่ยนแปลง จาก 16 ภาษาที่แสดงไว้ที่นี่ชื่อฟังก์ชั่นภาษาอังกฤษนั้นสั้นที่สุดสำหรับสูตรนี้

คำอธิบาย:

=                                          - return
 INDEX(                                  ) - the item of
       A:A                                 - the input
          ,                                - at
           MATCH(                       )  - the position of
                                       ,   - the first exact match of
                 MAX(        )             - the maximum of
                     LEN(   )              - the array of lengths of
                         A:A               - the input
                              ,            - in
                               LEN(   )    - the array of lengths of
                                   A:A     - the input

สำหรับสิ่ง,หลัง? สูตรยังคงใช้งานได้ถ้าไม่มีมัน
Anastasiya-Romanova

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

แน่ใจ? ฉันได้เปรียบเทียบสูตรทั้งสองนั้นแล้วและทั้งคู่ก็มาพร้อมกับผลลัพธ์ที่เหมือนกันแน่นอน
Anastasiya-Romanova

คุณใช้อาร์เรย์อินพุตที่มีสองสตริง (ต่างกัน) ที่มีความยาวเท่ากันหรือไม่? การใช้เครื่องหมายจุลภาค (เซมิโคลอน) ให้ความยาวสูงสุดของสตริงสุดท้ายตามที่คาดไว้ ... (Excel 2016, 64- บิต)
pbeentje

น่าเสียดายที่ชุมชนได้ตัดสินใจว่าการใช้ช่วงที่ตั้งชื่อในลักษณะนี้ไม่ถูกต้องดังนั้นฉันขอแนะนำว่าสำหรับกรณีนี้โดยเฉพาะคุณเปลี่ยนไปใช้A:Aและทำให้เป็นอาร์เรย์อย่างเป็นทางการด้วย{...}หรือโพสต์ที่ยอดเยี่ยม!
Taylor Scott

7

APL (Dyalog Unicode) , 9 ไบต์SBCS

⊢⊃⍨∘⊃∘⍒≢¨

ลองออนไลน์!

 จากการโต้แย้ง

⊃⍨ เลือกองค์ประกอบด้วยดัชนีซึ่งเป็น

 ครั้งแรกของ

 ดัชนีตามลำดับจากมากไปน้อยของ

≢¨ ความยาวของแต่ละ


7

Prolog (SWI) , 98 92 72 69 ไบต์

*คำกริยาระดับบนสุดคือ

X/Y:-atom_length(X,Y).
[A]*A.
[A,B|L]*Z:-A/X,B/Y,Y>X,[B|L]*Z;[A|L]*Z.

ลองออนไลน์!

คำอธิบาย

แถวแรกจะกำหนดเพรดิเคตของ dyadic /ให้สั้นatom_length/2ซึ่งเป็นจริงถ้าความยาวของอาร์กิวเมนต์แรกคืออาร์กิวเมนต์ที่สอง สิ่งนี้ช่วยให้เราประหยัดได้ 3 ไบต์เมื่อใช้atom_lengthสองครั้ง

เพรดิเคตหลักของเราถูกกำหนดให้เป็น dyadic *โดยที่อาร์กิวเมนต์แรกคือรายการและอาร์กิวเมนต์ที่สองคือองค์ประกอบที่ยาวที่สุดของรายการนั้น

แถวที่สองคือกรณีพื้นฐานของเราซึ่งระบุว่าองค์ประกอบที่ยาวที่สุดของรายการองค์ประกอบหนึ่งคือองค์ประกอบนั้น

แถวที่สามระบุว่าสำหรับรายการที่มีองค์ประกอบอย่างน้อย 2 องค์ประกอบองค์ประกอบที่ยาวที่สุดคือ:

หากความยาวขององค์ประกอบที่สองยาวกว่าองค์ประกอบแรกองค์ประกอบที่ยาวที่สุดจะอยู่ในรายการโดยไม่มีองค์ประกอบแรก

มิฉะนั้นองค์ประกอบที่ยาวที่สุดอยู่ในรายการโดยไม่มีองค์ประกอบที่สอง


ฉันสนใจที่จะเห็นคำอธิบายเกี่ยวกับวิธีการทำงาน
Kritixi Lithos

@Cowsquack: ฉันได้เพิ่มคำอธิบายสั้น ๆ
Emigna

7

Pyth , 4 ไบต์

h.Ml

ชุดทดสอบ

คำอธิบาย
h.Ml   | Program
h.MlZQ | With implicit variables filled in
-------+--------------------------------------------------------------------
h      | First element of
 .M  Q | The list of elements from the input list with the maximal value for
   lZ  | The length of the element

คุณดีใจที่คุณเอาชนะคำตอบของ Pyth ด้วยดี 6 ไบต์
Doggo

elD_และho_lบรรลุความยาวเท่ากัน
isaacg

1
@ hakr14 ขอบคุณมากสำหรับการแก้ไข!
Mr. Xcoder

6

PowerShellขนาด 24 ไบต์

($args[0]|sort l* -d)[0]

ลองออนไลน์!

ใช้อินพุต$args[0]ท่อที่Sort-Objectอิงตามลำดับlในการ-dเรียงลำดับ จากนั้นนำอันที่[0]หนึ่งของมัน เนื่องจากการเรียงลำดับมีความเสถียรจึงต้องใช้องค์ประกอบแรกในกรณีที่เสมอกัน


1
Nice name wuff wuff: D
Doggo

6

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

@(x)x{[~,p]=max(cellfun(@nnz,x))}

อินพุตเป็นอาร์เรย์สตริงของเซลล์

ลองออนไลน์!

คำอธิบาย

cellfun(@nnz,x)นำไปใช้nnzฟังก์ชั่น (จำนวน nonzeros) xไปแต่ละสายในอาร์เรย์การป้อนข้อมูล สำหรับสตริง ASCII nnzเทียบเท่ากับnumel(จำนวนองค์ประกอบ) แต่สั้นกว่า ผลลัพธ์เป็นอาร์เรย์ตัวเลขที่มีความยาวสตริง

จากนั้น[~,]=max(...)ให้ดัชนีสูงสุดครั้งแรกในอาร์เรย์ของความยาวสตริง ผลที่ได้จะถูกใช้เป็นดัชนีหยิก - รั้งxเพื่อรับสตริงที่เกี่ยวข้อง


6

JavaScript (Node.js)ขนาด 38 ไบต์

ลองออนไลน์!

a=>a.sort((a,b)=>a.length<b.length)[0]

@Doggo มันจะคืนองค์ประกอบแรกในกรณีของการผูก
LiefdeWen

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

แต่ถ้ามันเลือกอย่างสม่ำเสมอใน node.js บน TIO นั้นไม่ดีพอหรือไม่ \
LiefdeWen

1
คุณควรใช้-แทน<ในฟังก์ชันตัวเปรียบเทียบ
kamoroso94

1
@LiefdeWen ใช่ แต่มันแก้ไขปัญหาในการแสดงความคิดเห็น
เซบาสเตียนไซมอน

5

J , 19, 11, 10 8 ไบต์

0{>\:#@>

ลองออนไลน์!

ขอบคุณสำหรับนักตามคำแนะนำ!

-1 ไบต์ขอบคุณ FrownyFrog!

-2 ไบต์ขอบคุณ Conor O'Brien

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

    (  #@>) - unbox each string and find its length
     \:     - sort down the list of strings according to the lengths
0{::        - take and unbox the first string

ลองออนไลน์!


1
นี่เป็นวิธีเริ่มต้นของฉันใน K แต่จากนั้นฉันก็รู้ว่าฉันสามารถเรียงลำดับรายการตามจำนวนลดหลั่นและใช้รายการแรก ... คุณช่วยทำสิ่งเดียวกันใน J ได้ไหม
streetster

@streetster - ขอบคุณ! ฉันเพิ่งรู้ว่า ฉันจะลองตอนนี้มันจะสั้นกว่านี้มาก
Galen Ivanov

1
ไม่มีวงเล็บเกินกว่าจุดนี้:0{::]\:#@>
FrownyFrog

จะทำงาน{.@แทน0{::ไหม
Kritixi Lithos

1
8 bytes:0{>\:#@>
Conor O'Brien

4

C #, 43 + 18 = 61 ไบต์

ลองออนไลน์!

a=>a.OrderByDescending(x=>x.Length).First()

@Doggo มันจะคืนองค์ประกอบแรกในกรณีของการผูก
LiefdeWen

@LiefdeWen Order โดยมีความเสถียรดังนั้นในความเป็นจริงจะส่งคืนองค์ประกอบสุดท้ายในกรณีที่เสมอกัน ตัวอย่าง: tio.run/##TY7BCsIwDIbvfYqwUwvaF5jbQcHTRMGDB/ …
Grzegorz Puławski

1
@ GrzegorzPuławskiโอ้ฉันเห็นคงที่
LiefdeWen

ฉันมีบางอย่างที่บางคนอาจช่วยย่อa=>a.Aggregate((x,y)=>y.Length>x.Length?y:x)ฐาน 44 byte, a=>a.First(x=>x.Length==a.Max(y=>y.Length))43 byte base
Monso

1
@MrLore นั่นเป็นทางออกแรกของฉัน แต่จากนั้นในการเชื่อมโยงมันจะส่งกลับล่าสุดเพราะคำสั่งซื้อไม่ได้รับผลกระทบ
LiefdeWen





3

K (oK) , 9 ไบต์

*x@>#:'x:

ลองออนไลน์!

ตัวอย่าง:

*x@>#:'x:("edur";"oot";"taht")
"edur"

คำอธิบาย

*x@>#:'x: / solution
       x: / store input in variable x
    #:'   / count (#:) each (')
   >      / sort descending
 x@       / apply indices to x
*         / take the first one

หมายเหตุ:

ไม่ถูกลบเนื่องจากนี่ถูกจัดว่าเป็นเรื่องไม่สำคัญแม้จะเป็นเพียง 5 ขั้นตอน (ถ้าเขียนเป็นฟังก์ชัน{*x@>#:'x})


3

Java (OpenJDK 8) , 67 ไบต์

อีกการส่งในภาษาที่ฉันชอบ! (อ่าน: ฉันคนเดียวเท่านั้นที่รู้)
สิ่งนี้ใช้ไม่ได้กับอาเรย์ที่ว่างเปล่า แต่ก็ใช้ได้

แข็งแรงเล่นกอล์ฟ

w->{for(String y:w)if(y.length()>w[0].length())w[0]=y;return w[0];}

Ungolfed

for(String y:w)                           // Loops through all Strings
    if(y.length()>w[0].length())          // If the String is longer than the first String 
                                w[0]=y;   // Store it as the first string.
return w[0];                              // Return the first String.

ลองออนไลน์!


3

แร็กเก็ต , 160 ไบต์ 110 ไบต์

ลองออนไลน์! ครั้งแรกที่ให้คำแนะนำชื่นชม!

(define(m a)(if(>(length a)1)(if(>=(string-length(car a))(string-length(m(cdr a))))(car a)(m(cdr a)))(car a)))

Ungolfed

(define (m a)
    (if (> (length a) 1)
        (if (>= (string-length (car a)) (string-length (m (cdr a))))
            (car a)
            (m (cdr a))
        )
        (car a)
    )
)

โซลูชันที่อัปเดตขึ้นอยู่กับข้อเสนอแนะ


4
ฉันยินดีต้อนรับสู่ PPCG ในนามของชุมชน! ฉันสังเกตเห็นว่าวิธีแก้ปัญหาของคุณล้มเหลวในรายการที่มีสตริงที่ยาวที่สุด ตัวอย่างที่นี่ ฉันจำ Racket ไม่ดี แต่ถ้าคุณสามารถแนะนำให้เปลี่ยนอัลกอริทึมเป็นแบบfoldr-based ลองใช้ความยาวสูงสุดแล้วแบกมันไป
โคล

โอ้โห ขอบคุณสำหรับการชี้ให้เห็นว่า ฉันไม่อยากจะเชื่อว่าฉันไม่ได้ทดสอบสิ่งนั้น
Daniel Lambert

นอกจากนี้คุณยังสามารถเปลี่ยนdefine(m a)ไปλ(a)
fede s

1
ตรวจสอบเคล็ดลับหากคุณยังไม่ได้!
fede s


3

รอยขีดข่วน 27 17 170 160

รหัสรูปภาพ

คาดว่าทั่วโลก (ที่แนบมากับสไปรท์ทั้งหมดจะแม่นยำมากขึ้น) mylistรายการของสตริงที่เรียกว่า หลังจากคลิกธงสีเขียว, wคำที่ยาวที่สุดจะถูกทิ้งไว้ในตัวแปร

ฉันคิดว่านี่คือลิงค์

when gf clicked
set[w]to(item[1]of[mylist
set[i]to[0
repeat(length of[mylist
change[i]by(1
set[m]to(item(i)of[mylist
if<(m)>(w)>then
set[w]to(m
end
end
stop[all

นับตามเมตานี้


จำเป็นstop[allไหมที่นี่
ggorlen

3

Röda 30 ไบต์

{enum|[[#_,-_,_1]]|max|_|tail}

ลองออนไลน์!

คำอธิบาย:

{
 enum|         /* For each element, push its index to the stream */
 [[#_,-_,_1]]| /* For each element and index, push [length, -index, element] */
 max|          /* Find the greatest element */
 _|            /* Flat the list in the stream */
 tail          /* Return the last item in the stream */
}

ทางเลือก 30 ไบต์:

{enum|[[#_,-_,_1]]|max|[_[2]]}

ลองออนไลน์!


การเขียนคำตอบ jq ของฉันทำให้ฉันรู้ว่าenumสามารถตกหล่นและ[[-#_,_1]]สามารถเลือกขั้นต่ำแทนได้tio.run/…
Kritixi Lithos

@Cowsquack ที่ใช้งานไม่ได้เพราะminจะเปรียบเทียบสตริงที่สองตามลำดับตัวอักษร (เพราะอาร์เรย์จะถูกเปรียบเทียบเป็นลำดับที่สองโดยรายการที่สอง) ตัวอย่างเช่นอินพุต["b", "a"]จะให้"a"เป็นเอาท์พุท ฉันอาจจะเพิ่มminbyฟังก์ชั่นการRödaหรือสิ่งที่คล้ายกัน ...
fergusq

3

APL - 23 16 ไบต์

a←{((⍴¨⍵)⍳(⌈/(⍴¨⍵)))⌷⍵}

ขอบคุณทุกคนสำหรับคำแนะนำและกำลังใจที่ยอดเยี่ยมของคุณ!

a←{⍵⌷⍨(⍴¨⍵)⍳⌈/⍴¨⍵}

การใช้งาน:

a 'duck' 'duck' 'goose'
  'goose'

คำอธิบาย:

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

ลองออนไลน์!

(แก้ไขเพื่อความชัดเจน)


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

a←ไม่ได้นับ bytecount ของคุณ
Kritixi Lithos

ไม่เคยลืม APL ได้รับการประเมินจากขวาไปซ้าย: =>(⌈/(⍴¨⍵)) ⌈/⍴¨⍵นอกจากนี้(...)⌷⍵=> ⍵⌷⍨...เพื่อบันทึกหนึ่งไบต์
Zacharý

นอกจากวงเล็บแล้วอันนี้ก็ดูค่อนข้างดี!
Zacharý

2

ML มาตรฐาน (MLton) , 55 ไบต์

fun&(s::r)=foldl(fn(%,$)=>if size% >size$then%else$)s r

ลองออนไลน์! ตัวอย่างการใช้งาน: อัตราผลตอบแทน& ["abc","de","fgh"]"abc"

Ungolfed:

fun step (current, longest) = 
    if size current > size longest 
    then current 
    else longest

fun longestString (start :: list) = foldl step start list
  | longestString nil = raise Empty

ลองออนไลน์!



2

ขี้ขลาด , 38 ไบต์

a=>a[(v=a::map@#)::find(math.max...v)]

อธิบาย

a=>a[(v=a::map@#)::find(math.max...v)]
        a::map@#                        $ Create a list of the lengths of the input's strings.
      v=                                $ And assign it to v.
     (          )::find(            )   $ Find the first index in this list that equals...
                        math.max...v    $ The largest value of v, eg. the length of the longest string.
   a[                                ]  $ Get the value at that position.

ลองออนไลน์!




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