AMcoder - javascript, python, java, html, php, sql

Ամբողջ թվերի վեկտորում թվի հաջորդական առաջացման հիման վրա ցուցիչների մի շարք ստեղծում

Ասենք, որ ես ունեմ ամբողջ թվերի վեկտոր

x <- c(10, 1, 1, 4, 10, 10, 7, 7, 7)

և ես ուզում եմ այս վեկտորի հիման վրա ստեղծել ցուցիչների երկու հավաքածու: Առաջին ցուցիչը՝ y, պետք է հավասար լինի 1-ի՝ մինչև x == 10, իսկ հետո հավասար լինի զրոյի՝ վեկտորի մնացած մասի համար: Կարևոր է, որ այն պետք է անտեսի վեկտորում ավելի ուշ հայտնաբերված ցանկացած լրացուցիչ 10: Օրինակ, վերը նշված x-ը, ես կսպասեի

y <- c(1, 0, 0, 0, 0, 0, 0, 0, 0)

եւ եթե

x <- c(10, 10, 10, 1, 1, 5, 10, 7, 9)

ապա

y <- c(1, 1, 1, 0, 0, 0, 0, 0, 0)

Երկրորդ ցուցիչը՝ z, պետք է հավասար լինի 1ի առաջին տարրի համար հաջորդականության ավարտից հետո: Հաշվի առնելով վերը նշված x վեկտորները, ես կակնկալեի, որ ելքերը կլինեն.

z <- c(0, 1, 0, 0, 0, 0, 0, 0, 0)
z <- c(0, 0, 0, 1, 0, 0, 0, 0, 0)

Մի վեկտորի օգտագործումը մյուսը մշակելու համար միանգամայն լավ է: Ես չկարողացա գտնել դա լուծելու կոկիկ եղանակ, հաշվի առնելով, որ հաջորդականությունը մշակելու համար օգտագործվող թիվը կարող է ավելի ուշ լինել վեկտորի մեջ, ուստի հավասարության պարզ ստուգումն իմ դեպքում չի աշխատում:

r
14.10.2020

  • Ո՞րը կլինի ձեր y-ը, երբ xx <- c(1, 10, 10, 1, 4, 10, 10, 7, 7, 7) է, այսինքն x-ը չի սկսվում 10-ով: 14.10.2020
  • Այդ դեպքում այն ​​պետք է վերադարձնի c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0): Կարծես ներքևում գտնվող @akrun-ի լուծումը նույնպես ճիշտ է ֆիքսում այդ եզրային գործը, թեև դա տեղի չի ունենա այն կոնկրետ պարամետրում, որտեղ ես կիրառում եմ սա: Լավ կետ, սակայն: 14.10.2020

Պատասխանները:


1

Մենք կարող ենք օգտագործել rle արժեքները, որոնք հավասար չեն 10-ի առաջին բազմությանը 0-ի՝ այդ «արժեքները» վերագրելով FALSE-ին:

+(inverse.rle(within.list(rle(x == 10), values[seq_along(values) > 1] <- FALSE)))
#[1] 1 0 0 0 0 0 0 0 0
+(inverse.rle(within.list(rle(x == 10), values[seq_along(values) > 1] <- FALSE)))
#[1] 1 1 1 0 0 0 0 0 0

Երկրորդ դեպքում ստացեք դիրքը which-ով և ստեղծեք տրամաբանական վեկտոր %in%-ով

library(data.table)
+( seq_along(x) %in% which(rleid(x == 10) > 1)[1])
#[1] 0 1 0 0 0 0 0 0 0

 +( seq_along(x) %in% which(rleid(x == 10) > 1)[1])
#[1] 0 0 0 1 0 0 0 0 0
14.10.2020
  • Անտեղյակ էր rle-ից: Այս գործի համար իսկապես լավ է աշխատում: 14.10.2020
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..