ค้นหาการเกิดขึ้นของตัวละครในสายป้อน


18

ท้าทาย

เขียนโปรแกรมที่ได้รับสตริงxซึ่งเป็น 10 ตัวอักษรและตัวอักษรy, เอาท์พุทของตัวละครจำนวนครั้งที่เกิดขึ้นในสตริงyx

โปรแกรมที่สั้นที่สุดในหน่วยไบต์เพื่อให้ชนะ

ตัวอย่าง

Input: tttggloyoi, t
Output: 3

Input: onomatopoe, o
Output: 4

11
นี่ดูเหมือนจะง่ายเกินไปที่จะท้าทาย ทำไม จำกัด การป้อนข้อมูลถึง 10 แทนที่จะ จำกัด ไม่ให้เลย
ทำให้เสียชีวิต

7
ต้องการเงื่อนไขที่ชนะ
isaacg

2
อย่าลังเลที่จะย้อนกลับการแก้ไขของฉันหากไม่เห็นด้วยกับคุณ
Beta Decay

8
รูปแบบอินพุตมีความยืดหยุ่นเพียงใด เราสามารถเลือกตัวคั่นอื่นเช่นช่องว่างหรือบรรทัดใหม่ได้หรือไม่ สตริงสามารถอยู่ในเครื่องหมายคำพูดได้หรือไม่? เราสามารถรับจดหมายก่อนและสายอักขระที่สองได้หรือไม่? อักขระจะเป็นตัวพิมพ์เล็กเสมอหรือไม่ ถ้าไม่มีตัวละครอื่น ๆ สามารถเกิดขึ้นได้?
Martin Ender

5
ลักษณะนี้มีพิรุธเหมือนคำถามสัมภาษณ์ C ...
เควนติน

คำตอบ:


18

Pyth, 3 ไบต์

/ww

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

$ pyth -c '/ww'
sdhkfhjkkj
k
3

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


ดูเหมือนว่าจะไม่ถูกต้อง pyth อีกต่อไป?
Ven

กรุณาอธิบาย
MilkyWay90

@ MilkyWay90 นี่คือวิธีที่คุณอาจใช้: ลองออนไลน์! . /เพียงแค่นับจำนวนที่เกิดขึ้นในสายอักขระแรกของสายอักขระที่สอง wรับสายอินพุต
isaacg

@isaacg โอ้ฉันเห็นแล้ว ขอขอบคุณ!
MilkyWay90

11

Pyth - 3 ไบต์

คำตอบ Pyth ที่ต่างกันและชัดเจนน้อยกว่าในขนาดเดียวกัน มันพับนับมากกว่าอินพุต

/FQ

Test Suite




6

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

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

เพียง regex ที่ตรงกับตัวละครซึ่งเท่ากับตัวอักษรตัวสุดท้ายในการป้อนข้อมูล (ยกเว้นตัวเอง) เมื่อได้รับ regex เพียงครั้งเดียว Retina ก็จะคืนค่าจำนวนการแข่งขัน


ว้าวฉันอยู่ที่นี่พยายามทำสิ่งแปลก ๆ ทุกประเภทด้วยอาร์เอสและคุณก็เอาชนะฉันด้วยลุคเฮด +1
kirbyfan64sos

4

เขาวงกต , 32 29 27 24 ไบต์

),}{)-
@ ,  +);__
!-`{:}

สิ่งนี้จะอ่านอักขระตัวเดียวก่อนตามด้วยสตริงที่จะนับและสมมติว่าไม่มีค่า null-bytes ในสตริง

คำอธิบาย

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

IP ,ที่ตอนนี้จะย้ายลงเพื่ออ่านตัวอักษรตัวแรกของสตริงค้นหาด้วย ค่าจะถูกทำให้ไร้ผลด้วย`เพื่อให้ได้พฤติกรรมการเลี้ยวที่ถูกต้อง ขณะที่เรากำลังอ่านตัวละครจาก STDIN ตอนนี้ IP จะติดตามวงนี้:

  }{)-
  ,  +);__
  `{:}

{:}สร้างสำเนาของรหัสอักขระที่เก็บไว้และ+เพิ่มลงในค่าปัจจุบัน หากผลเป็น0(เช่นตัวละครในปัจจุบันเป็นหนึ่งที่เรากำลังมองหา) ย้ายทรัพย์สินทางปัญญาตรงไปข้างหน้า: -เพียงแค่ได้รับกำจัดของ0, )การเพิ่มขึ้นนับ{}เป็น no-op

อย่างไรก็ตามหากผลลัพธ์หลังจาก+นั้นไม่ใช่ศูนย์เราไม่ต้องการนับอักขระปัจจุบัน ดังนั้น IP จะเลี้ยวขวาแทน นั่นเป็นจุดสิ้นสุดดังนั้นโค้ดนั้นจะถูกดำเนินการสองครั้งหนึ่งครั้งส่งต่อและย้อนกลับหนึ่งครั้ง );___;)+-){}นั่นคือรหัสที่เกิดขึ้นจริงในกรณีนี้จะกลายเป็น );เพิ่งกำจัดความแตกต่างที่ไม่เป็นศูนย์___กด 3 ศูนย์ แต่;จะทิ้งหนึ่งในนั้น )หนึ่งในการเพิ่มขึ้นของทั้งสองที่เหลืออีกสองเลข+เพิ่มให้เป็นหนึ่งเดียว1, -หักได้จากเคาน์เตอร์และ)เพิ่มขึ้นทีละเคาน์เตอร์ ในคำอื่น ๆ เราได้สร้างไม่มี -op ซับซ้อนมาก

เมื่อเราตี EOF, ,ผลักดัน-1ซึ่ง`จะกลายเป็น1และ IP ยิงเลี้ยวขวา -ลบออก1จากตัวนับ (การยกเลิกออฟเซ็ตเริ่มต้น) !พิมพ์ตัวนับและ@ยุติโปรแกรม


4

Python 3, 29 ไบต์

print(input().count(input()))

นี่มันง่ายนะ สมมติว่าอินพุตเป็นสตริงตัวอักษรสิบตัว


4
คุณคัดลอกฉัน! : D
isaacg

1
@isaacg จิตใจที่ดีคิดเหมือนกัน? ; D
Beta Decay

หากคุณไม่จำเป็นต้องอ่านอินพุตจะf=lambda x,y:x.count(y)สั้นลงไหม? (ขออภัยหากไม่ได้ผลผมบนโทรศัพท์มือถือและไม่สามารถตรวจสอบ)
โคล

@ mbomb007 ความผิดพลาดของฉันขอบคุณสำหรับการชี้แจง
โคล

1
การลบเครื่องหมายวงเล็บออกรอบ ๆ การพิมพ์จะเป็นการประหยัดอักขระprint input().count(input())หรือa,b=input();print a.count(b)ในจำนวนเดียวกัน
Willem

4

Snowman 1.0.2 , 16 ตัวอักษร

~vgvgaSaLNdEtSsP

น่าแปลกที่สั้น คำอธิบาย:

~      make all vars active (even though we only need two, we don't really care)
vgvg   get two lines of input
aS     split first line on second line
aL     length of the new array
NdE    decrement (because ex. "axbxc""x"aS -> ["a" "b" "c"] which is length 3)
tSsP   to-string and print

เยี่ยมมาก! ฉันคงไม่คิดว่าคำตอบที่สั้นจะเป็นไปได้ใน Snowman
Alex A.

4

เทมเพลตการเขียนโปรแกรม C ++, 160 154 116 ไบต์

เพียงเพื่อหัวเราะคิกคัก

ขอบคุณที่อดีตบาร์ตสำหรับการเล่นกอล์ฟลง!

template<int w,int x,int y,int...s>class A:A<w+(x==y),x,s...>{};A<0,'t','t','t','t','g','g','l','o','y','o','i',0>a;

การใช้งาน: อักขระตัวแรกในการติดตั้งเทมเพลตคืออักขระที่จะค้นหา

สอดคล้องกับclang -std = c ++ 11 -c -> ผลลัพธ์อยู่ที่จุดเริ่มต้นของข้อความแสดงข้อผิดพลาด

Occurences.cpp:1:66: error: too few template arguments for class template 'A'
template<int w,char x,char y,char...s>class A{static const int a=A<w+((x==y)?1:0),x,s...>::a;};
                                                             ^
Occurences.cpp:1:66: note: in instantiation of template class 'A<3, 't', '\x00'>' requested here
template<int w,char x,char y,char...s>class A{static const int a=A<w+((x==y)?1:0),x,s...>::a;};

สอดคล้องกับgcc -std = c ++ 11 -c -> ผลลัพธ์อยู่ที่ด้านล่างของข้อความแสดงข้อผิดพลาด

Occurences.cpp: In instantiation of ‘const int A<3, 't', '\000'>::a’:
Occurences.cpp:1:64:   recursively required from ‘const int A<1, 't', 't', 't', 'g', 'g', 'l', 'o', 'y', 'o', 'i', '\000'>::a’
Occurences.cpp:1:64:   required from ‘const int A<0, 't', 't', 't', 't', 'g', 'g', 'l', 'o', 'y', 'o', 'i', '\000'>::a’
Occurences.cpp:2:62:   required from here
Occurences.cpp:1:64: error: wrong number of template arguments (2, should be at least 3)

ค้นหา A < 3 , 't', '\ 000'> และ A < 3 , 't', '\ x00'>

รุ่น 154 ไบต์

template<int w,char x,char y,char...s>class A{static const int a=A<w+(x==y),x,s...>::a;};                          
int a=A<0,'t','t','t','t','g','g','l','o','y','o','i','\0'>::a;

รุ่น 160 ไบต์:

template<int w,char x,char y,char...s>class A{static const int a=A<w+((x==y)?1:0),x,s...>::a;};                          
int a=A<0,'t','t','t','t','g','g','l','o','y','o','i','\0'>::a;

คุณสามารถย่อ((x==y)?1:0)ให้เหลือเพียง(x==y)ประมาณ 6 ไบต์ (ฉันคิดว่า)
kirbyfan64sos

ขอบคุณ - อยากให้แน่ใจว่ามันถูกกำหนดพฤติกรรมเพราะฉันไม่แน่ใจว่ามาตรฐานพูดboolถึงintการเปลี่ยนใจอย่างไร
Otomo

มันกำหนดพฤติกรรม
kirbyfan64sos

ใช่ตอนนี้ฉันรู้แล้วเช่นกัน :) ขอบคุณมาก. (ฉันคิดว่ามันอาจจะขึ้นอยู่กับการนำไปใช้)
โอโตโม

1
128 ไบต์: ใช้ที่ไม่ระบุชื่อแทนenum static constใช้0แทน'\0'การยกเลิก ใช้แทนint charใช้การประกาศที่แตกต่างกันเล็กน้อยเพื่อทำการติดตั้ง ลบบรรทัดใหม่ superflouos template<int w,int x,int y,int...s>class A{enum{a=A<w+(x==y),x,s...>::a};};A<0,'t','t','t','t','g','g','l','o','y','o','i',0>a;. ตรวจสอบกับ g ++ และเสียงดังกราว
อดีต


3

Javascript (ES6), 26 ไบต์

(a,b)=>a.split(b).length-1

โซลูชัน quick'n'easy นี้กำหนดฟังก์ชั่นที่ไม่ระบุชื่อ หากต้องการใช้งานให้เพิ่มการประกาศตัวแปรไปยังจุดเริ่มต้น ลองดูสิ:

แก้ไข:โอ้ฉันเห็นว่ามีวิธีแก้ปัญหาที่คล้ายกันมากอยู่แล้ว ฉันหวังว่าไม่เป็นไร



3

C ++, 78 ไบต์

int main(int,char**v){int c=0,i=0;while(i<10)v[1][i++]==*v[2]&&++c;return c;}

โทรแบบนี้:

$ g++ -std=c++14 -O2 -Wall -pedantic -pthread main.cpp && ./a.out tttggloyoi t; echo $?
3

3

องค์ประกอบ 23 ไบต์

__);11'[)\
~="0 1@][+]`

ขึ้นบรรทัดใหม่เป็นส่วนหนึ่งของโปรแกรม ฉันกำลังจริงใช้มันเป็นชื่อตัวแปร

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

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

อินพุตเป็นดังนี้:

qqqqwwweee
q

ผลผลิตเป็นเช่นนี้

4

3

Julia, 26 25 ไบต์

f(s,c)=endof(findin(s,c))

findinฟังก์ชันส่งกลับดัชนีในอาร์กิวเมนต์แรกที่อาร์กิวเมนต์ที่สองพบเป็นเวกเตอร์ ความยาวของเวกเตอร์คือจำนวนครั้งที่เกิดขึ้น

บันทึกหนึ่งไบต์ต้องขอบคุณ Glen O.


endoflengthจะช่วยให้คุณประหยัดไบต์ในสถานที่ของ
เกลน O

3

APL, 7 3 ไบต์

+/⍷

สิ่งนี้จะสร้างฟังก์ชั่นรถไฟ มันทำงานได้โดยการสร้างเวกเตอร์ของศูนย์และคนที่สอดคล้องกับดัชนีที่ตัวละครที่ปรากฏในสตริง ( ) จากนั้นจะรวมเวกเตอร์ ( +/)

บันทึกแล้ว 4 ไบต์ด้วย kirbyfan64sos และ NBZ!


APL แก้ตัวเหมือน K หรือไม่? ฉันคิดว่าคุณสามารถทำอะไรบางอย่างเช่น+/⍷นั้น (ฉันไม่รู้ APL ดังนั้นฉันอาจผิด)
kirbyfan64sos

@ kirbyfan64sos แกงเผ็ดเดียวที่ฉันรู้คืออาหารดังนั้นฉันไม่แน่ใจ แต่ฉันจะดูมัน ขอบคุณสำหรับคำแนะนำ!
Alex A.

@ kirbyfan64sos ใช่มันถูกเรียกว่าfunction trainดังนั้น + / ⍷จะใช้งานได้จริง แต่เนื่องจากเรากำลังมองหา char ตัวเดียวเราอาจใช้ = แทน⍷
อดัม

3

Perl, 21 16 ตัวอักษร

(13 ตัวอักษรรหัส + 3 ตัวเลือกบรรทัดคำสั่ง)

$_=0+s/$^I//g

วิ่งตัวอย่าง:

bash-4.3$ perl -it -pe '$_=0+s/$^I//g' <<< tttggloyoi
3

bash-4.3$ perl -io -pe '$_=0+s/$^I//g' <<< onomatopoe
4

bash-4.3$ perl -i5 -pe '$_=0+s/$^I//g' <<< 1234
0

เคล็ดลับเรียบร้อยด้วย<>!
ThisSuitIsBlackNot

คุณสามารถบันทึกไบต์ด้วยการ-lecho -en 'onomatopoe\no' | perl -pe '$_=eval"y/".<>."//"'
ดร็อป

1
และคุณสามารถทำให้คะแนนรวมของคุณลดลงเหลือ 16 ด้วยperl -pe '$_+=s/${\<>}//g'
ThisSuitIsBlackNot

เคล็ดลับการอ้างอิงนั้นไม่น่าเชื่อ ขอบคุณ @ThisSuitIsBlackNot
จัดการ

ทำไมถึง+=จำเป็น? =ดูเหมือนว่าจะใช้งานได้เช่นกัน (และควรจะยังคงทำงานได้เมื่ออินพุตเริ่มต้นด้วยตัวเลขบางหลัก)
อดีต

3

PHP, 36 35 ไบต์

<?=substr_count($argv[1],$argv[2]);


การใช้งาน:
เรียกใช้สคริปต์ด้วยอาร์กิวเมนต์สองตัว
php script.php qwertzqwertz q

PHP, 23 ไบต์

หากคุณลงทะเบียนตัวแปรทั่วโลก (เป็นไปได้เฉพาะใน PHP 5.3 และด้านล่าง) คุณสามารถบันทึก 12 ไบต์ (ขอบคุณMartijn )

<?=substr_count($a,$b);


การใช้งาน:
เรียกใช้สคริปต์และประกาศตัวแปรกลางphp script.php?a=qwertzqwertz&b=q


1
คุณสามารถลบช่องว่างหลังเครื่องหมายจุลภาคเพื่อลดหนึ่งไบต์
Voitcus

1
หากคุณมีการลงทะเบียนกลมคุณสามารถทำscript.php?a=qwertzqwertz&b=qและทำ<?=substr_count($a,$b);23 ตัวอักษร
Martijn

@ มาร์ตินความคิดที่ดีขอบคุณ!
jrenk

3

Dyalog APLขนาด 3 ไบต์

      +/=

Ie "ผลรวมของจำนวนไบต์ที่เท่ากัน" เช่น:

      f ← +/=
      'onomatopoe' f 'o'
4

หรือเพียงแค่

      'onomatopoe'(+/=)'o'
4

K ไม่ชนะ APL ในเวลานี้

ลองออนไลน์


โปรดอย่าแก้ไขโพสต์หลายสิบรายการพร้อมกัน คุณกำลังน้ำท่วมหน้าแรกอย่างสมบูรณ์ หากมีหลายโพสต์ที่จำเป็นต้องแก้ไข (ซึ่งจะเกิดขึ้นเป็นครั้งคราวเช่นเนื่องจากมีการเพิ่มแท็กใหม่) ดังนั้นโดยทั่วไปจะทำได้เพียง 3 รายการต่อครั้งและรออย่างน้อย 12 ชั่วโมงเพื่อให้สามารถย่อหน้าได้ หน้า.
Martin Ender

@ MartinBüttnerใช่ฉันไม่ได้ตระหนักถึงเวลา :-( ผู้ใช้ปกติไม่ได้มี "ไมเนอร์แก้ไข" ตัวเลือก ... ฉันจะรู้ว่าทำไมมันไม่สามารถใช้ได้สำหรับทุกคน.
อดัม

น่าเสียดายที่ไม่มีตัวเลือกดังกล่าวเลยแม้แต่กับผู้ดูแล
Martin Ender

3

T-SQL, 99 40 ไบต์

SELECT 11-LEN(REPLACE(s,c,'')+'x')FROM t

ความแตกต่างระหว่างสตริงอินพุตและสตริงที่ลบอักขระออกไปอย่างง่ายดาย รับอินพุตจากตาราง t

แก้ไขการเปลี่ยนแปลงเพื่อลบปัญหาการนับช่องว่างและนำเข้าบัญชีที่ยอมรับได้ในปัจจุบันสำหรับ SQL ขอบคุณ @BradC สำหรับการเปลี่ยนแปลงและการออมทั้งหมด


คุณไม่ควรจะต้องทั้งหมดนั่งร้านเพียงทำSELECT LEN(s)-LEN(REPLACE(s,c,''))FROM tที่t เป็นตารางการป้อนข้อมูลก่อนที่มีประชากรที่มีเขตข้อมูลและs c
BradC

ในบันทึกอื่นรหัสนี้ให้คำตอบที่ไม่ถูกต้องสำหรับสตริงเช่นA B C D จุดสิ้นสุดในช่องว่าง (ถ้าคุณถูกขอให้นับช่องว่าง) เนื่องจากLENละเว้นช่องว่างต่อท้าย
BradC

@BradC ฉันคิดย้อนกลับไปกฎที่ว่าอะไรเป็นที่ยอมรับโดยเฉพาะเกี่ยวกับ SQL นั้นมีข้อ จำกัด และไม่ชัดเจน ฉันจะดูที่การแก้ไขspaceปัญหาเมื่อฉันมีเวลานิดหน่อย
MickyT

ฉันมักจะแค่วางส่วนท้ายและลบออก; ในกรณีนี้การป้อนข้อมูลมีการรับประกันว่าจะเป็น 10 ตัวอักษรคุณสามารถรหัสยากเป็นSELECT 11-LEN(REPLACE(s,c,'')+'x')FROM t
BradC

@BradC ใช่ดูที่นี่อีกครั้งไม่แน่ใจว่าทำไมฉันถึงอนุญาตสำหรับความยาวแปรผัน ทำการเปลี่ยนแปลง
MickyT


2

J, 5 ไบต์

+/@:=

ฉันรู้สึกเหมือนว่า J จะมี built-in สำหรับสิ่งนี้ แต่ฉันไม่สามารถหาได้ - บางทีหนึ่งในผู้ใช้ J ที่ใช้งานสามารถสอนฉัน ดังนั้นแทนที่จะนี้เป็นครั้งแรกใช้=ปัจจัยการผลิตที่เปลี่ยนลงไปในตัวละครแต่ละตัว1ถ้ามันเท่ากับขอหนึ่งหรือ0มิฉะนั้น จากนั้น+/คำนวณผลรวมของรายการนั้น


2

แฟ้มแบตช์ 121 ไบต์

เพราะฉันเป็นนักทำโทษ ...

SET c=0
SET e=_
SET t=%1%%e%
:l
SET a=%t:~0,1%
IF "%a%"=="%2" SET /A c+=1
SET t=%t:~1%
IF NOT "%t%"=="%e%" GOTO l
ECHO %c%

คำเตือน: สมมติว่า_ไม่มีสิ่งใดเกิดขึ้นในสายป้อนข้อมูล ถ้าเป็นเช่นนั้นตัวแปรeจะต้องมีการปรับอย่างเหมาะสม

สิ่งนี้จะตั้งค่าตัวแปรตัวนับของเราcและการแบ่งส่วนจุดสิ้นสุดของสตริงเป็น_ก่อนที่จะต่อท้ายนั้นกับสตริงอินพุตของเรา%1และตั้งค่าสตริงที่ต่อtกันเป็น จากนั้นเรากำลังป้อนห่วง:lเราตั้งตัวแปรตัวละครชั่วคราวaจะเป็นอักษรตัวแรกของtตรวจสอบว่าตรงกับสายป้อนที่สองของเรา%2และเพิ่มขึ้นถ้าเป็นจริงแล้วตัดตัวอักษรตัวแรกออกจากc tเงื่อนไขสิ้นสุดการวนรอบtของเราจะตรวจสอบกับการแบ่งเขตการสิ้นสุดของสตริงและวนกลับถ้าไม่ จากนั้นเราก็echoออกค่าของเคาน์เตอร์ของเรา

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



2

PowerShell ขนาด 32 ไบต์

สี่ต่อหนึ่ง! และพวกมันก็มีความยาวเท่ากัน! :)

($args[0]-split$args[1]).Count-1

หรือ

param($a,$b)($a-split$b).Count-1

อีกวิธีหนึ่งคือ

$args[0].Split($args[1]).Count-1

หรือ

param($a,$b)$a.Split($b).Count-1

สองสไตล์แรกใช้ตัวดำเนินการอินไลน์-splitในขณะที่สองสองสไตล์จะใช้อาร์กิวเมนต์แรกเป็นสตริงและใช้ตัวดำเนินการ.Split()แบบอิงสตริง ในทุกกรณีอาเรย์จะถูกส่งกลับโดยที่เราจะต้องลดจำนวนลงทีละหนึ่งเนื่องจากเราได้รับไอเท็มอาเรย์มากกว่าหนึ่งรายการที่เกิดขึ้นจากอาร์กิวเมนต์ที่สอง

อันนี้สนุกนะ ...


2

จูเลีย 21 ไบต์

f(s,c)=sum(i->c==i,s)

โปรดทราบว่ามันต้องcมีลักษณะเป็นอักขระไม่ใช่อักขระตัวเดียว ดังนั้นคุณใช้มันเป็นf("test me",'e')(ซึ่งผลตอบแทน 2) และไม่f("test me","e")(ซึ่งผลตอบแทน 0 เพราะ'e'!="e")


2

> <> (ปลา) , 30 ไบต์

0&v
=?\ilb
=?\:@=&+&l1
n&/;

รับสตริงจากนั้นอักขระที่จะนับ การป้อนข้อมูลไม่ได้แยก (อย่างน้อยในล่ามออนไลน์) ลองใช้กับล่ามออนไลน์: http://fishlanguage.comฉันนับไบต์ด้วยมือดังนั้นให้ฉันรู้ว่าฉันผิด

คำอธิบาย

ก่อนอื่น> <> คือ 2 มิติและลูปผ่านเส้นหรือคอลัมน์จนกว่าจะถึง a ;ข้อผิดพลาดหรือ ซึ่งหมายความว่าหากดำเนินการจากซ้ายไปขวา (เช่นเดียวกับที่เริ่มต้นของโปรแกรม) มันจะล้อมรอบบรรทัดหากถึงจุดสิ้นสุดและจะไม่ถูกย้ายหรือถูกบอกให้หยุดโปรแกรม อักขระบางตัวต่อบรรทัดจะถูกทำซ้ำเพราะมีฟังก์ชั่นที่แตกต่างกันขึ้นอยู่กับทิศทางของตัวชี้และบรรทัดที่สี่จะมีตัวอักษรในลำดับย้อนกลับเนื่องจากตัวชี้ย้ายจากขวาไปซ้าย

บทสรุปของโปรแกรมมีให้ด้านล่าง ดูคำแนะนำในรายการสำหรับ> <> บน esolangsเพื่อดูว่าแต่ละตัวละครทำอะไร

บรรทัด 1: 0&v

0&v -put 0 into the register and change direction to down-up

บรรทัด 2: =?\ilb

(เริ่มต้นที่บรรทัดที่ 1 เลื่อนตัวชี้ไปที่นั่นคืออักขระที่สาม)

\ -reflect the pointer and make it move left-right
i -read input
lb=?\ -reflect downwards if there are 11 values in the stack

บรรทัด 3: =?\:@=&+&l1

(เริ่มต้นที่ตัวละครที่สาม)

:@ -duplicate y and shift the stack e.g. ['x','y','y'] -> ['y','x','y']
=&+& -increment the register if the character popped from x = y
l1=?\ -reflect downwards if there is 1 value in the stack

บรรทัด 4: n&/;

(เริ่มต้นที่ตัวละครที่สาม)

/ -reflect right-left
&n; -print value of the register

2

Ruby, 22 20 ไบต์

p gets.count(gets)-1

ตัวอย่าง: http://ideone.com/MEeTd2

-1เป็นเพราะความจริงที่ว่าgetsดึงอินพุตบวกอักขระ newline Ruby String#countนับจำนวนครั้งที่มีอักขระจากการโต้แย้งเกิดขึ้นในสตริง

ตัวอย่างเช่นสำหรับการป้อนข้อมูล [ test\n, t\n] การtเกิดขึ้นสองครั้งและการ\nเกิดขึ้นครั้งเดียวและจะต้องถูกลบออก


คุณสามารถลบ$><<และลดขนาด 4 ไบต์
Vasu Adari

@VasuAdari แต่ฉันจำเป็นต้องพิมพ์ผลอย่างใด ...
Cristian Lupascu

คุณไม่สามารถทำสิ่งนี้ได้หรือ ->p gets.count(gets)-1
Vasu Adari

@VasuAdari คุณพูดถูก สำหรับช่วงเวลาที่ฉันคิดว่าจะใส่ qutoes รอบเอาท์พุท แต่มันเป็นตัวเลขดังนั้นมันก็โอเค ขอบคุณ!
Cristian Lupascu


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