ระบุแต่ละชุดของตัวเลขที่เหมือนกันแทน


27

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

ตัวอย่าง

[][]/[]

[42][0]/[1]

[7,7,7][0,1,2]/[1,2,3]

[10,20,30][0,0,0]/[1,1,1]

[5,12,10,12,12,10][0,0,0,1,2,1]/[1,1,1,2,3,2]

[2,7,1,8,2,8,1,8,2,8][0,0,0,0,1,1,1,2,2,3]/[1,1,1,1,2,2,2,3,3,4]

[3,1,4,1,5,9,2,6,5,3,5,9][0,0,0,1,0,0,0,0,1,1,2,1]/[1,1,1,2,1,1,1,1,2,2,3,2]


2
โดยพื้นฐานแล้วจำนวนครั้งที่มันปรากฏตัวตามลำดับจนถึงตอนนี้?
โจคิง

1
@ โจกิ้งใช่นั่นเป็นอีกวิธีหนึ่งในการระบุ แต่ "จนถึง" หมายถึงการใช้ศูนย์และ "จนถึงและรวมถึงสิ่งนี้" หมายถึงหนึ่งฐาน ฉันต้องการที่จะเลือก
อดัม

คำตอบ:


23

JavaScript (ES6), 26 ไบต์

1 การจัดทำดัชนี

a=>a.map(o=x=>o[x]=-~o[x])

ลองออนไลน์!

ความคิดเห็น

a =>                // a[] = input array
  a.map(o =         // assign the callback function of map() to the variable o, so that
                    // we have an object that can be used to store the counters
    x =>            // for each value x in a[]:
      o[x] = -~o[x] //   increment o[x] and yield the result
                    //   the '-~' syntax allows to go from undefined to 1
  )                 // end of map()

1
ฉันไม่รู้ว่ามันทำงานอย่างไร แต่มันก็ดูดี
อดัม

ฉันไม่เคยเห็น-~มาก่อน - นั่นคืออัญมณีที่สมบูรณ์
DaveMongoose

หรืออาจใช้aเพื่อจัดเก็บค่า แต่จำเป็นต้องมี-/ ~ดัชนีดังนั้นจึงไม่มีการบันทึกไบต์
user202729


1
@DaveMongoose -~เป็นจริงทางเลือกที่ใช้กันทั่วไปเพื่อ+1(เนื่องจากมีความสำคัญที่แตกต่างกัน) ในหลายภาษา
ASCII เท่านั้น

10

R , 27 ไบต์

function(x)ave(x,x,FUN=seq)

ลองออนไลน์!

คำอธิบาย:

ave(x,x,FUN=seq)แยกเวกเตอร์ออกxเป็นเวกเตอร์ย่อยโดยใช้ค่าของxคีย์การจัดกลุ่ม จากนั้นseqฟังก์ชั่นจะถูกเรียกใช้สำหรับแต่ละกลุ่มและแต่ละผลลัพธ์จะถูกจัดเรียงใหม่ในตำแหน่งกลุ่มเดิม

ดูตัวอย่างที่ดีกว่า:

x <- c(5,7,5,5,7,6)
ave(x, x, FUN=seq) # returns 1,1,2,3,2


 ┌───┬───┬───┬───┬───┐
 │ 57557 │
 └───┴───┴───┴───┴───┘            
   |   |   |    |  ||   ▼    ▼  |
 GROUP A : seq(c(5,5,5)) = c(1,2,3)
   |   |   |    |  ||   ▼    ▼  |
 ┌───┐ | ┌───┬───┐ |1|23|
 └───┘ | └───┴───┘ |
       ▼           ▼
 GROUP B : seq(c(7,7)) = c(1,2)
       |           |
       ▼           ▼
     ┌───┐       ┌───┐
     │ 1 │       │ 2 │
     └───┘       └───┘ 

   |   |   |   |   |
   ▼   ▼   ▼   ▼   ▼ 
 ┌───┬───┬───┬───┬───┐
 │ 11232 │
 └───┴───┴───┴───┴───┘  

บันทึก :

seq(y)ฟังก์ชั่นส่งกลับลำดับ1:length(y)ในกรณีที่yมีlength(y) > 1แต่ส่งกลับลำดับจาก1:y[1]ถ้าyมีเพียงองค์ประกอบเดียว
โชคดีที่ไม่ใช่ปัญหาเพราะในกรณีนี้ R - บ่นกับคำเตือนมากมาย -เลือกเฉพาะค่าแรกซึ่งบังเอิญเป็นสิ่งที่เราต้องการ :)


2
ยอดเยี่ยม! ฉันจะเพิ่มรางวัลสำหรับสิ่งนี้ ไม่เคยเห็นaveมาก่อน
Giuseppe

ฉันรู้สึกเป็นเกียรติขอบคุณมาก! :)
digEmAll

6

MATL , 4 ไบต์

&=Rs

วิธีนี้เป็นแบบ 1

ลองใช้ที่MATL Online !

คำอธิบาย

ใช้[1,2,3,2]เป็นตัวอย่าง

    # Implicitly grab the input array of length N
    #
    #   [1,2,3,2]
    #
&=  # Create an N x N boolean matrix by performing an element-wise comparison
    # between the original array and its transpose:
    #
    #     1 2 3 2
    #     -------
    # 1 | 1 0 0 0
    # 2 | 0 1 0 1
    # 3 | 0 0 1 0
    # 2 | 0 1 0 1
    #
R   # Take the upper-triangular portion of this matrix (sets below-diagonal to 0)
    #
    #   [1 0 0 0
    #    0 1 0 1
    #    0 0 1 0
    #    0 0 0 1]
    #
s   # Compute the sum down the columns
    #
    #   [1,1,1,2]
    #
    # Implicitly display the result

2
อ่าฉันรู้ว่ามีปัญหาเก่า ๆ ที่ทำให้ฉันคิดถึงสิ่งที่คล้ายกันมันไม่ซ้ำใครคือราคาถูกและโซลูชัน MATLมีอักขระหนึ่งตัวที่แตกต่างกัน!
Giuseppe

5

APL (Dyalog Unicode)ขนาด 7 ไบต์

ขอบคุณมากสำหรับ H.PWiz, Adámและ dzaima สำหรับความช่วยเหลือในการแก้ไขข้อบกพร่องและการแก้ไข

+/¨⊢=,\

ลองออนไลน์!

คำอธิบาย

เวอร์ชัน 10 ไบต์ที่ไม่ใช่โดยปริยายจะอธิบายได้ง่ายกว่าก่อน

{+/¨⍵=,\⍵}

{         } A user-defined function, a dfn
      ,\⍵  The list of prefixes of our input list 
           (⍵ more generally means the right argument of a dfn)
           \ is 'scan' which both gives us our prefixes 
           and applies ,/ over each prefix, which keeps each prefix as-is
    ⍵=     Checks each element of  against its corresponding prefix
           This checks each prefix for occurrences of the last element of that prefix
           This gives us several lists of 0s and 1s
 +/¨       This sums over each list of 0s and 1s to give us the enumeration we are looking for

เวอร์ชันโดยปริยายทำสามสิ่ง

  • ครั้งแรกก็เอาตัวอย่างของใช้ใน,\⍵ขณะที่,\ทางด้านขวาด้วยตัวเองโดยปริยายสามารถคิดออกว่ามันควรจะดำเนินการเกี่ยวกับการโต้แย้งที่เหมาะสม
  • ประการที่สองสำหรับ⍵=เราแทนที่ด้วยซึ่งหมายถึงการโต้แย้งที่ถูกต้อง
  • ประการที่สามตอนนี้เราไม่มีข้อโต้แย้งที่ชัดเจน (ในกรณีนี้) เราสามารถลบวงเล็บปีกกา{}เพราะฟังก์ชั่นโดยปริยายไม่ใช้

5

AWK , 14

  • บันทึก 1 ไบต์ขอบคุณ @NahuelFouilleul
{print++a[$1]}

ลองออนไลน์!

ด้านบนทำดัชนีแบบอิงฐานเดียว หากคุณต้องการทำดัชนีแบบ zero-based มันเป็นไบต์พิเศษ:

{print a[$1]++}

ลองออนไลน์!


1
โปรดทราบว่าวินาทีสามารถประหยัดหนึ่งไบต์{print++a[$1]}โดยไม่มีที่ว่างดูเหมือนว่าจะใช้งานได้
Nahuel Fouilleul

@NahuelFouilleul ขอบคุณ!
Digital Trauma

5

J , 7 ไบต์

1#.]=]\

ลองออนไลน์!

1 การจัดทำดัชนี

คำอธิบาย:

]\ all the prefixes (filled with zeros, but there won't be any 0s in the input):
   ]\ 5 12 10 12 12 10
5  0  0  0  0  0
5 12  0  0  0  0
5 12 10  0  0  0
5 12 10 12  0  0
5 12 10 12 12  0
5 12 10 12 12 10

]= is each number from the input equal to the prefix:
   (]=]\) 5 12 10 12 12 10
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
0 1 0 1 0 0
0 1 0 1 1 0
0 0 1 0 0 1

1#. sum each row:
   (1#.]=]\) 5 12 10 12 12 10
1 1 1 2 3 2

K (OK) , 11 10 ไบต์

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

{+/'x=,\x}

ลองออนไลน์!


1
หึคุณมีความสุขกำลังที่ผมทำข้อมูลในเชิงบวกอย่างเคร่งครัด ...
อดัม

@ อดัมใช่มิฉะนั้นผมจะต้องไปยังกล่องคำนำหน้า :)
เลน Ivanov

1
ใน k: ='->=
ngn



3

C # (Visual C # Interactive Compiler)ขนาด 44 ไบต์

x=>x.Select((y,i)=>x.Take(i).Count(z=>z==y))

ลองออนไลน์!



คุณมี inversed ของความท้าทายในขณะนี้ .. [7,7,7]ควรเอาท์พุทและไม่[0,1,2] [0,0,0]
Kevin Cruijssen

1
@KevinCruijssen - ขอบคุณ :) ดูเหมือนว่าฉันเข้าใจผิดสิ่งต่าง ๆ มันควรได้รับการแก้ไขแล้ว
dana


2

เยลลี่ขนาด 4 ไบต์

ċṪ$Ƥ

ลองออนไลน์!

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


อีกวิธีหนึ่ง;\ċ"คือโรงเรียนเก่าคือ 4
Jonathan Allan

2

R , 41 ไบต์

function(x)diag(diffinv(outer(x,x,"==")))

ลองออนไลน์!

ผิดปกติการส่งคืนดัชนี zero-based จะสั้นลงใน R


อีกครั้ง Giuseppe ความรู้ที่เหนือกว่าของคุณเกี่ยวกับ R ทำให้ฉันพ่ายแพ้ ฉันมีวิธีที่แยบยลที่ 60 ไบต์ แต่ก็ไม่พอ!
Sumner18

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

ขอบคุณสำหรับกำลังใจ! ฉันโพสต์ของฉันแล้วและเปิดรับข้อเสนอแนะเพื่อการปรับปรุงเสมอ!
Sumner18

2

Ruby, 35 ไบต์

->a{f=Hash.new 0;a.map{|v|f[v]+=1}}

น่าเสียดายที่มันค่อนข้างธรรมดา - สร้างแฮชที่เก็บยอดรวมสำหรับแต่ละรายการที่พบ

ตัวเลือกอื่น ๆ ที่น่าสนุก แต่น่าเสียดายที่ยังไม่สั้นพอ:

->a{a.dup.map{a.count a.pop}.reverse}   # 37
->a{i=-1;a.map{|v|a[0..i+=1].count v}}  # 38

2

R , 62 43 ไบต์

x=z=scan();for(i in x)z[y]=1:sum(y<-x==i);z

-19 ไบต์ขอบคุณ Giuseppe โดยการลบสิ่งที่และตารางและมีการเปลี่ยนแปลงเพียงเล็กน้อยกับการใช้งาน

เป็นต้นฉบับ

x=z=scan();for(i in names(r<-table(x)))z[which(x==i)]=1:r[i];z

ฉันไม่สามารถแข่งขันกับความรู้ของ Giuseppe ได้ดังนั้นการส่งของฉันจึงค่อนข้างยาวกว่าเขา แต่ใช้ความรู้พื้นฐานของฉันฉันรู้สึกว่าโซลูชันนี้ค่อนข้างฉลาด

r<-table(x) นับจำนวนครั้งที่แต่ละหมายเลขปรากฏขึ้นและเก็บไว้ใน r เพื่อใช้อ้างอิงในอนาคต

names() รับค่าของแต่ละรายการที่ไม่ซ้ำกันในตารางและเราวนซ้ำชื่อเหล่านี้ด้วยการวนรอบ

ส่วนที่เหลือจะตรวจสอบว่ารายการใดมีค่าเท่ากับการวนซ้ำและเก็บลำดับของค่า (ตั้งแต่ 1 ถึงจำนวนรายการของการวนซ้ำ)

ลองออนไลน์!


คุณสามารถลบwhich()เพื่อบันทึก 7 ไบต์
จูเซปเป้

การใช้งานของคุณ1:r[i]ทำให้ฉันมีความคิดที่จะลบtable()ทั้งหมด: x=z=scan();for(i in x)z[y]=1:sum(y<-x==i);zคือ 43 ไบต์! นี่เป็นวิธีที่ดี!
จูเซปเป้

ดูเหมือนว่าพวกเราไม่สามารถแข่งขันกับความรู้ R ของ digEmAll ได้ !
จูเซปเป้

ฉันเห็นสิ่งนั้นและรู้สึกงุนงงอย่างแน่นอน!
Sumner18

2

Haskell , 44 ไบต์

([]#)
x#(y:z)=sum[1|a<-x,a==y]:(y:x)#z
_#e=e

ลองออนไลน์!

คำอธิบาย

สำรวจรายการจากซ้ายไปขวาทำให้รายการxองค์ประกอบที่เข้าชมเริ่มแรก[]:

สำหรับการเผชิญหน้าของทุกนับองค์ประกอบทั้งหมดเท่ากับในรายการyx


1
อีกสักหน่อย แต่อาจจะน่าสนใจ: (#(0*));(x:r)#g=g x:r# \y->0^abs(y-x)+g y;e#g=e ลองออนไลน์!
Laikoni

@Laikoni: คุณคิดยังไงกับเรื่องนี้คุณควรโพสต์มันโดยสิ้นเชิง!
ბიმო

1
เสร็จสิ้น: codegolf.stackexchange.com/a/178629/56433
Laikoni


2

Haskell , 47 46 ไบต์

(#(*0))
(x:r)#g=g x:r# \y->0^(y-x)^2+g y
e#g=e

ลองออนไลน์!

วิธีการที่แตกต่างจากคำตอบของ BMOซึ่งยาวกว่าเล็กน้อย (และกรุณายืมชุดทดสอบที่ดีของพวกเขาด้วย)

gความคิดที่จะย้ำกว่ารายการป้อนข้อมูลและติดตามจำนวนครั้งในแต่ละองค์ประกอบได้เกิดขึ้นโดยการปรับปรุงฟังก์ชั่น Ungolfed:

f (const 0)
f g (x:r) = g x : f (\ y -> if x==y then 1 + g y else g y) r
f g []    = []

โอกาสการเล่นกอล์ฟที่น่าสนใจเกิดขึ้นสองครั้ง อันดับแรกสำหรับค่าเริ่มต้นgเป็นฟังก์ชันคงที่ซึ่งไม่พิจารณาอาร์กิวเมนต์และส่งคืน0:

const 0  -- the idiomatic way
(\_->0)  -- can be shorter if parenthesis are not needed
min 0    -- only works as inputs are guaranteed to be non-negative
(0*)     -- obvious in hindsight but took me a while to think of

และอย่างที่สองคือการแสดงออกของตัวแปรxและyผลตอบแทน1ถ้าxเท่ากับyและ0อย่างอื่น:

if x==y then 1else 0  -- yes you don't need a space after the 1
fromEnum$x==y         -- works because Bool is an instance of Enum
sum[1|x==y]           -- uses that the sum of an empty list is zero
0^abs(x-y)            -- uses that 0^0=1 and 0^x=0 for any positive x
0^(x-y)^2             -- Thanks to  Christian Sievers!

อาจมีวิธีที่สั้นกว่านี้ ใครมีความคิดบ้าง


1
0^(x-y)^2คุณสามารถใช้
Christian Sievers


1

Ruby , 34 ไบต์

->a{r=[];a.map{|x|(r<<x).count x}}

ลองออนไลน์!


ฉันไม่อยากจะเชื่อเลยว่าฉันพยายาม->a{i=-1;a.map{|v|a[0..i+=1].count v}}แล้วและไม่คิดว่าจะสร้างอาร์เรย์ใหม่ขึ้นมาฮ่า ๆ ๆ ทำได้ดีมาก
DaveMongoose

1

ทุบตี, 37 24 ไบต์

f()(for x;{ r+=$[a[x]++]\ ;};echo $r)

TIO

หากถูกต้องจะมีรูปแบบนี้ตามที่ DigitalTrauma แนะนำ

for x;{ echo $[a[x]++];}

TIO


1
ส่งรายการเป็น args บรรทัดคำสั่ง - tio.run/##S0oszvj/Py2/SKHCuporNTkjX0ElOjG6IlZbO5ar9v///8b/… - เพียง 24 ไบต์
Digital Trauma

@ DigitalTrauma ขอบคุณ แต่ฉันไม่รู้ว่ามันทำผิดกฎหรือเปล่า เช่นเดียวกับที่มันถูกขอให้แทนที่รายการและอาจจะเป็นสิ่งที่เหมือนtio.run/…
Nahuel Fouilleul

2
@NahuelFouilleul ก็ใช้ได้โปรแกรมเต็มรูปแบบได้รับอนุญาตด้วยและนั่นเป็นวิธีที่ถูกต้องในการป้อน / ส่งออกรายการ (IMO)
ASCII- เท่านั้น

1

Perl 5, 11 ไบต์

$_=$h{$_}++

TIO

คำอธิบายที่แสดงความคิดเห็น

  • $_ตัวแปรพิเศษของ perl ที่มีบรรทัดปัจจุบันเมื่อวนลูปที่อินพุต ( -pหรือ-nสวิทช์)
  • $h{$_}++ปรับแผนที่อัตโนมัติ%hและสร้างรายการด้วยคีย์$_และส่วนเพิ่มและให้ค่าก่อนการเพิ่ม
  • ตัวแปรพิเศษถูกพิมพ์เนื่องจาก-pสวิตช์-lสวิตช์ลบจุดสิ้นสุดของบรรทัดบนอินพุตและเพิ่มจุดสิ้นสุดของบรรทัดบนเอาต์พุต

นั่นดูน่าทึ่ง สนใจที่จะอธิบาย?
อดัม

@ Adámขอบคุณสำหรับคำติชมของคุณแน่นอนทำแล้ว
Nahuel Fouilleul



1

ทูตขนาด 23 ไบต์

{`~&>Zip[_,_[0:#_::0]]}

ลองออนไลน์!

คำอธิบาย

{`~&>Zip[_,_[0:#_::0]]}
{                     }    _: input (e.g., [5, 12, 10, 12, 12, 10])
             0:#_          range from 0 to length of input (inclusive)
                           e.g., [0, 1, 2, 3, 4, 5, 6]
                 ::0       descending range down to 0 for each element
                           e.g., [[0], [1, 0], [2, 1, 0], [3, 2, 1, 0], [4, 3, 2, 1, 0], [5, 4, 3, 2, 1, 0], [6, 5, 4, 3, 2, 1, 0]]
           _[       ]      get input elements at those indices
                           e.g., [[5], [12, 5], [10, 12, 5], [12, 10, 12, 5], [12, 12, 10, 12, 5], [10, 12, 12, 10, 12, 5], [nil, 10, 12, 12, 10, 12, 5]]
     Zip[_,          ]     concatenate each value with this array
                           e.g., [[5, [5]], [12, [12, 5]], [10, [10, 12, 5]], [12, [12, 10, 12, 5]], [12, [12, 12, 10, 12, 5]], [10, [10, 12, 12, 10, 12, 5]]]
   &>                      using each sub-array spread as arguments...
 `~                            count frequency
                               e.g. [12, [12, 10, 12, 5]] = 12 ~ [12, 10, 12, 5] = 2

1

C (gcc) , 65 62 ไบต์

c,d;f(a,b)int*a;{for(;c=d=b--;a[b]=d)for(;c--;d-=a[c]!=a[b]);}

ลองออนไลน์!

-2 ไบต์ขอบคุณASCII-only


สิ่งนี้ให้ความรู้สึกตรงไปตรงมา แต่ฉันไม่สามารถทำให้สั้นลงได้ด้วยวิธีการอื่น



@ ASCII- เท่านั้นนี่คือคำตอบที่ถูกต้อง? ไม่มีส่วนหัวรวมไม่มีการประกาศเป็นตัวอย่างพร้อมคำเตือนมากมายแม้ว่าจะส่งออกมาก็ตาม
AZTECCO

คำเตือน @AZTECCO นั้นใช้ได้ (stderr ถูกละเว้น) ตราบใดที่ทำในสิ่งที่ควรจะเป็นที่ยอมรับ โปรดทราบว่านี่คือการประกาศฟังก์ชั่นรวมทั้งการประกาศตัวแปรบางอย่าง - คุณสามารถวางไว้ที่ใดก็ได้เป็นนิพจน์ระดับบนสุดและมันจะรวบรวมปรับ จำนวนมากของคำตอบค (และผู้ที่อยู่ในภาษาที่มีไวยากรณ์ที่เข้มงวดน้อยกว่า) ไม่โดยทั่วไปมีค่อนข้างไม่กี่คำเตือนเพราะ bytesaves ที่ไม่ได้เป็นรูปแบบที่ดีรหัส
ASCII เท่านั้น

ตกลงฉันเข้าใจได้ แต่ยังมีบางสิ่งที่ไม่ถูกต้องสำหรับฉัน หากเราต้องการทดสอบกับชุดอื่น (ขนาด) เราต้องแก้ไขโค้ดแม้ในลูปการพิมพ์บวกอินพุตควรเป็นเพียงชุดไม่ใช่ขนาด "รับรายการจำนวนเต็มบวกอย่างเคร่งครัด ... "ดังนั้นฉันคิดว่าอินพุตควรเป็นเพียงรายการ
AZTECCO

@AZTECCO ไม่แน่ใจว่าการสนทนานี้ควรอยู่ในความคิดเห็นของคำตอบนี้หรือไม่ แต่คุณอาจต้องการดูเมตา - โดยเฉพาะในI / Oและรูปแบบคำตอบ
attinat

1

K (ngn / k) , 18 ไบต์

(,/.!'#'=x)@<,/.=x

ลองออนไลน์!


แนวทางเก่า ๆ

K (ngn / k) , 27 23 22 ไบต์

{x[,/.=x]:,/.!'#'=x;x}

ลองออนไลน์!


นี่ไม่ใช่วิธีแก้ปัญหาที่รวดเร็วและสกปรกฉันจะทำการปรับปรุงในภายหลังเมื่อฉันมีโอกาสคิดวิธีที่ดีกว่า

คำอธิบาย:

  • =xส่งกลับ dict ที่คีย์เป็นรายการของ x และค่าเป็นดัชนีของพวกเขา ( 3 1 4 5 9 2 6!(0 9;1 3;,2;4 8 10;5 11;,6;,7))
  • i: กำหนด dict ให้กับ i
  • #:'นับค่าสำหรับแต่ละคีย์ ( 3 1 4 5 9 2 6!2 2 1 3 2 1 1)
  • !:' แจกแจงแต่ละค่า (3 1 4 5 9 2 6!(0 1;0 1;,0;0 1 2;0 1;,0;,0) )
  • ,/.: แยกค่าและรายการที่เรียบ (0 1 0 1 0 0 1 2 0 1 0 0 )
  • x[,/.:i]: แยกดัชนีจาก i ย่อและกำหนดค่าแต่ละค่าจากรายการด้านขวาที่ดัชนีเหล่านี้

น่ารำคาญรายการอัพเดท แต่ค่า Null ถูกส่งคืนโดยการมอบหมายดังนั้นฉันต้องส่งคืนรายการหลังเครื่องหมายอัฒภาค (;x )

แก้ไข:ลบลำไส้ใหญ่ภายนอก

edit2:ลบการบ้านที่ไม่จำเป็นออก


0

เรติน่า 0.8.2 , 30 ไบต์

\b(\d+)\b(?<=(\b\1\b.*?)+)
$#2

ลองออนไลน์! ลิงค์มีกรณีทดสอบ 1 การจัดทำดัชนี คำอธิบาย: ส่วนแรกของ regex จับคู่แต่ละจำนวนเต็มในรายการในทางกลับกัน กลุ่ม lookbehind ตรงกับการเกิดขึ้นของจำนวนเต็มนั้นในแต่ละบรรทัดจนถึงและรวมถึงจำนวนเต็มปัจจุบัน จำนวนเต็มจะถูกแทนที่ด้วยจำนวนการแข่งขัน


0

แบตช์ 61 ไบต์

@setlocal
@for %%n in (%*)do @set/ac=c%%n+=1&call echo %%c%%

1 การจัดทำดัชนี เนื่องจากการแทนที่ตัวแปรเกิดขึ้นก่อนการแยกวิเคราะห์set/aคำสั่งจะสิ้นสุดการเพิ่มชื่อตัวแปรที่กำหนดโดยการต่อตัวอักษรcกับจำนวนเต็มจากรายการ (ตัวแปรตัวเลขเริ่มต้นเป็นศูนย์ในชุด) ผลลัพธ์จะถูกคัดลอกไปยังจำนวนเต็มอื่นเพื่อความสะดวกในการส่งออก (แม่นยำยิ่งขึ้นจะช่วยประหยัดไบต์)



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