แมวกินข้อมูลของคุณอีกครั้ง!


30

สร้างโปรแกรม cat หรือที่เรียกว่าโปรแกรมที่รับอินพุตและพิมพ์

... ยกเว้นโปรแกรมจะสุ่มตัวละครออกจากอินพุตของคุณและพิมพ์แทน

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

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

หากอินพุตBOOOWLนั้นไม่ควรลบ Os ทั้งหมดที่มีโอกาสเท่ากัน: ควรพิจารณาตัวละครแต่ละตัว (ไม่ซ้ำกัน) ดังนั้นแทนที่จะเป็น O ทุกตัวที่มีโอกาส 1/5 (ตัวอย่าง) แต่ละ O ควรมี 1 / 5 โอกาสดังนั้นแทนที่จะมีการโอกาสที่ 1/5 ของBWLควรจะมีโอกาสที่ 1/5 ของ,BOWLBOOWL

อินพุตถูก จำกัด ที่ STDIN หรือเทียบเท่าที่ใกล้เคียงที่สุด

ตัวละครแต่ละตัวจะต้องมีอย่างน้อย 10% และมีโอกาสสูงสุดที่จะลบออกได้ 30%

อัตราต่อรองของตัวละครแต่ละตัวควรคำนวณแยกกัน

คุณสามารถใช้องค์ประกอบใด ๆ ในภาษาของคุณที่สนับสนุนการกระทำแบบสุ่มไม่ว่าจะเป็นฟังก์ชั่นหรืออย่างอื่น

เอาต์พุตจะต้องผ่าน STDOUT หรือใกล้เคียงที่สุด หากภาษาของคุณมี STDOUT อย่าส่งออกด้วยวิธีอื่นใด หากภาษาของคุณไม่สามารถส่งออกสตริงเป็นข้อความได้ให้ใช้การเทียบเท่าที่ใกล้เคียงที่สุด (เอาต์พุตอักขระอาร์เรย์ของ C ตกลงที่นี่)

นี่คือรหัสกอล์ฟ โปรแกรมที่สั้นที่สุดชนะ


4
ควรจะมีโอกาสอยู่ระหว่าง 10% ถึง 30% สำหรับอักขระที่จะถูกลบออกหรือไม่ หรือนั่นเป็นเพียงเพื่อจุดประสงค์ของตัวอย่าง
— attinat

2
คุณหมายถึงอะไรโดย "ชุดอักขระหนึ่งตัว" ถ้าอินพุทBOWL OF SOUPอาจOจะถูกลบทั้งหมดในครั้งเดียว?
— roblogic

1
คำตอบทั้งหมดจนถึงตอนนี้ใช้โอกาส 20% ที่แน่นอนสำหรับอักขระที่จะถูกลบออก ฉันไม่แน่ใจว่าเจตนาของคำถามคือให้ตัวละครทุกตัวมีโอกาสเท่ากัน
— Nzall

3
Output must be through STDOUT, as a text. Do not output a character array.<- ฉันมีภาษาที่ช่วยให้คุณสามารถส่งออกอาเรย์ตัวละคร (มันแบนก่อนที่จะส่งออก) ไม่ได้รับอนุญาตหรือไม่ วิธีการเกี่ยวกับภาษาเช่น C ที่สตริงเป็นพื้นตัวอักขระ?
— Ismael Miguel

1
ใช้เทียบเท่าที่ใกล้ที่สุด สตริงอาเรย์อักขระของ C นั้นใช้ได้เนื่องจากมีความใกล้เคียงกับข้อความมากที่สุด
— แอนดรู

คำตอบ:


10

Japtap -f , 2 ไบต์

5ö

การ-fตั้งค่าสถานะ "เรียกใช้โปรแกรมในแต่ละองค์ประกอบในอินพุตแรกส่งออกอาร์เรย์ขององค์ประกอบที่ส่งกลับค่าความจริง" 5öส่งกลับตัวเลขสุ่มระหว่าง 0 (รวม) และ 5 (พิเศษ) เช่นเดียวกับ JavaScript 0 เป็นเท็จใน Japt

ลองมัน


2
ฉันจะย้อนเวลากลับไปสร้างภาษาที่ o คือความท้าทายนี้จากนั้นกลับไปและส่งคำตอบของฉันหรืออาจจะสร้างสตริงว่างที่: p
— Andrew

การตั้งค่าสถานะบรรทัดคำสั่งไม่ควรนับเป็นจำนวนรวม
— Daniel Vestøl

1
@ DanielVestølคลิก-fที่ชื่อใน
— Ismael Miguel


1
ตลก แต่ก็โอเค
— แอนดรู

8

Python 3 , 63 ไบต์

from random import*
for c in input():print(end=c[random()<.2:])

ลองออนไลน์!

Python 2 , 67 65 ไบต์

from random import*
print''.join(c for c in input()if.8>random())

ลองออนไลน์!

ตัวละครแต่ละตัวมีโอกาส 20% ที่ผึ้งจะหลุด

วิธีการที่แตกต่างกันความยาวเดียวกัน:

from random import*
print''.join(c[random()<.2:]for c in input())

ลองออนไลน์!


63 ไบต์ในหลาม 2 พร้อมฟังก์ชั่น
— ตอบเมื่อ

กฎระบุอย่างชัดเจนให้เขียนโปรแกรมเต็มรูปแบบ:Create a cat program, a.k.a a program that takes an input and prints it.
— movatica

นี่จะอ่านบรรทัดแรกของอินพุตเท่านั้น
— AKX

ปัญหาไม่ได้ระบุว่าต้องอ่านหลายบรรทัด
— movatica

8

ถ่าน 4 ไบต์

ΦS‽⁵

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด คำอธิบาย:

 S      Input a string
Φ       Filter where nonzero
  ‽⁵    Random number 0..4
        Implicitly print

คุณสามารถใช้หมายเลขใด ๆ จาก4การ10ที่จะได้รับโอกาสในการ25%ไป10%ตามลำดับ


7

Befunge-98 (PyFunge) 11 ไบต์

>#@~3j4???,

ลองออนไลน์!

ตัวละครแต่ละตัวมีโอกาส 25% ที่จะถูกลบออก การตัดสินใจนี้ทำในสาม?คำแนะนำ

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

??p2=1/2?p3=1/2∗1+1/2∗p2=3/4?


5

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

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

@(s)s(rand(size(s))>.2)

ลองออนไลน์!


5

เยลลี่ , 9 5 ไบต์

5X’µƇ

ลองออนไลน์!

Monad ที่รับสตริง Jelly เป็นอาร์กิวเมนต์และส่งคืนสตริง Jelly ประมวลผล เมื่อใช้เป็นโปรแกรมแบบเต็มจะพิมพ์ผลลัพธ์โดยนัย ตัวละครแต่ละตัวมีโอกาสที่จะถูกลบ 20%

คำอธิบาย

   µƇ | Filter using the following as a monad for each character:
5X    | - Random number between 1 and 5
  ’   | - Decreased by 1

5

Japt , 3 ไบต์

ตัวละครแต่ละตัวมีโอกาส 1 ใน 5 ที่จะถูกลบออก 5สามารถเปลี่ยนเป็นอะไรระหว่าง4และ9รวมหรือAสำหรับ10การเปลี่ยนแปลงราคา

Æ5ö

ลองมัน

Æ5ö     :Implicit input of string
Æ       :Filter by
 5ö     :  Random integer in the range [0,5), with 0 being falsey


5

05AB1E , 5 4 ไบต์

ʒ₄Ω≠

-1 ขอบคุณไบต์@Grimy

ลองมันออนไลน์หรือเรียกใช้โปรแกรมเดียวกัน 10 ครั้ง

ตัวละครแต่ละตัวมีการเปลี่ยนแปลงลดลง 25%

คำอธิบาย:

ʒ     # Filter the characters of the (implicit) input-string by:
 ₄    #  Push 1000
  Ω   #  Pop and push a random digit from it
   ≠  #  And check that it's NOT 1 (!=1)
      # (after which the result is output implicitly)

≠อาจเป็น_( ==0)


2
5Lสามารถเป็น₄-1 (เปลี่ยนโอกาสจาก 20% เป็น 25% ซึ่งยังคงยอมรับได้)
— Grimmy

@Grimy คนดีขอบคุณ! :)
— Kevin Cruijssen

4

MATL , 9 ไบต์

t&n&r.2>)

Exaplanation:

t         implicitly take input and duplicate it
 &n       compute the size of the input and...
   &r     generate a random array of that size
     .2>  check which entries of that array are greater than 0.2
        ) and use the result using logical indices to extract certain characters of the input

ลองออนไลน์!


4

Pyth , 8 5 ไบต์

sfO4Q

ลองออนไลน์!

sfO4Q   Implicit: Q=eval(input())
 f  Q   Filter characters of Q where the following is truthy:
  O4      Random number in the range [0-4)
          Any non-zero value is truthy, so this will drop characters 25% of the time
s       Concatenate into string, implicit print

รุ่นก่อนหน้า 8 ไบต์:

s*Vm!!O4

ลองออนไลน์!

s*Vm!!O4QQ   Implicit: Q=eval(input())
             Trailing QQ inferred
   m    Q    Map each character in Q using:
      O4       Choose random integer in [0-4)
    !!         Logical NOT twice - maps 0 to 0, anything else to 1
             The result is a list of 0s and 1s, with 0 having 25% chance to appear
 *V      Q   Vectorised multiplication of the above with Q
s            Concatenate into string, implicit print

Qจะโยนข้อผิดพลาดหากอินพุตไม่ใช่ python-esque ข้อผิดพลาดเช่นจากหรือ[1 , และจะทำงานเฉพาะสำหรับการป้อนข้อมูลบรรทัดเดียวจึงเลือกที่ดีที่สุดอาจจะเป็นa/bQwzj.z
— ar4093

4

Cubix , 20 ไบต์

u$w\A|UDw@?;...>o._U

ลองออนไลน์!

นานกว่าที่ฉันคาดหวังเพราะฉันไม่มี ops จำนวนมากที่ฉันไม่สามารถกำจัดได้ โอกาสในการดรอปอักขระคือ 25% ฉันคิดว่ามันโอเค

    u $
    w \
A | U D w @ ? ;
. . . > o . _ U
    . .
    . .

ดูมันทำงาน

คำอธิบายสั้น ๆ :

  • A|A สิ่งนี้เริ่มต้นสแต็ก, อินพุตทั้งหมด, สะท้อนกลับ, อินพุตทั้งหมด (เพียง EOI -1)
  • ;? pop to of stack ทดสอบ EOI (-1)
  • _?@ ถ้าเป็นลบให้สะท้อนกลับไปสู่การทดสอบและสิ้นสุดในการหยุด
  • $Dกระโดด\เข้าไปใน setter ทิศทางแบบสุ่ม
    • จากตัวตั้งค่าทิศทาง, 3 ทิศทางนำไปสู่oสำหรับเอาต์พุตจากนั้นกลับเข้าไปในลูปหนึ่งจะพลาดoในพา ธ ของมันและตรงไปที่ลูป

3

APL (dzaima / APL) , 10 9 ไบต์SBCS

ฟังก์ชันนำหน้าเงียบโดยไม่ระบุชื่อ ตัวละครแต่ละตัวมีโอกาสถูกลบ 20%

⊢⌿⍨4≥∘?5¨

ลองออนไลน์!

5¨ ศูนย์สำหรับอักขระแต่ละตัว

? จำนวนเต็มแบบสุ่มช่วง 1–5 สำหรับแต่ละอักขระ

4≥ บูลีนมาสก์สำหรับจำนวนเต็มที่น้อยกว่าหรือเท่ากับ 4

⊢⌿⍨ กรองอาร์กิวเมนต์โดยใช้หน้ากากนั้น


3

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

/./_?(`.







ลองออนไลน์! คำอธิบาย:

/./_

ประมวลผลตัวละครแต่ละตัวเป็นรายบุคคล

?(`

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


3

R , 32 23 ไบต์

function(x)x[rt(x,3)<1]

ลองออนไลน์!

ฟังก์ชันที่ใช้เวกเตอร์อักขระเป็นอินพุตและส่งคืนเวกเตอร์อักขระที่ประมวลผล ตัวละครแต่ละตัวมีโอกาสที่จะถูกลบ 20%

ขอบคุณ @Roland และ @Gi Portugueseppe ที่ช่วยประหยัดได้ 7 ไบต์และ @JDL สำหรับอีก 2!


1
function(x)x[!rbinom(x,1,0.2)]
— Roland

พร้อมสายเดียวกับ @Roland, function(x)x[rf(x,1,1)>1]; df(1,1,1)เป็นเรื่องเกี่ยวกับ0.16ที่หลอกลวง
— จูเซปเป้

หรือrt(x,3)>1(มีโอกาสประมาณ 20%)
— JDL

2
@JDL มัน<1แต่ขอบคุณ! บันทึกอีก 2 รายการ
— Nick Kennedy

3

T-SQL 2012, 83 ไบต์

วนลูปผ่านอินพุตจากขวาไปซ้ายการลบอักขระ 0 หรือ 1

โอกาส 25% สำหรับการลบตัวละครแต่ละตัว

DECLARE @i varchar(max)='The cat ate my homework'

DECLARE @ int=len(@i)WHILE @>0SELECT
@i=stuff(@i,@,str(rand()*2)/2,''),@-=1PRINT @i

คำอธิบาย:

rand()*2ส่งกลับทุ่นซึ่งไม่สามารถใช้ในstuffคำสั่ง

การstrแปลงนี้เป็น varchar หลังจากปัดเศษเป็นจำนวนเต็มที่ใกล้ที่สุด การลอยจะถูกแปลงเป็น varchar (ซึ่งไม่ได้รับอนุญาตเป็นพารามิเตอร์ที่สามในstuffอย่างใดอย่างหนึ่ง)

varchar นี้มีโอกาส 25% ที่จะเป็น '2' โอกาส 50% ที่จะเป็น '1' และโอกาส 25% ที่จะเป็น '0' การหารด้วย 2 จะมีโอกาส 25% ที่ผลลัพธ์จะเป็น 1 ส่วนนี้จะแปลง varchar ให้เป็นจำนวนเต็ม

จำนวนเต็มเป็นพารามิเตอร์ตัวที่สามที่คาดไว้ในstuffฟังก์ชั่น

ลองออนไลน์


เคล็ดลับที่ดีมากกับSTRฉันจะต้องจำไว้ว่า ไม่แน่ใจว่ามันยุติธรรมที่จะนำเงินออก (ไม่นับ) DECLAREของคุณในรหัส(นับ) ของคุณ แต่การเปลี่ยนแปลงนั้นจะทำให้คุณเสียค่าใช้จ่ายเพียง 1 ไบต์เนื่องจากคุณสามารถกำจัดส่วนเสริมSETด้วยDECLARE @ INT=len(@i)
— BradC

@BradC ฉันเห็นด้วยและฉันจะพยายามจำไม่ให้ piggyback ในอนาคต
— t-clausen.dk

2

J , 10 ไบต์

#~5>6?@$~#

ลองออนไลน์!

คล้ายกับคำตอบ APL ของอดัม แต่ฉันเขียนไว้จริง ๆ ก่อนที่จะดูเขา

  • 6.. $~ #ใช้ความยาวของอินพุต#และจัดรูปร่าง$~หมายเลข 6 ลงในรายการที่มีความยาว
  • ?@ปฏิบัติต่อกันหกในรายการที่เป็นตายและม้วน?มัน
  • >5ตายน้อยกว่า 5 (ค่าที่เป็นไปได้คือ 0..5) หรือไม่ ใช้ผลบูลีนที่สร้างบิตมาสก์
  • #~ กรองอินพุตด้วยมาสก์นั้น


2

Javascript,  46   44  51 ไบต์

i=>alert([...i].filter(c=>Math.random()>.2).join``)

+7 ไบต์เนื่องจากข้อกำหนด STDOUT ที่เพิ่มเข้ามา

-2 ไบต์ขอบคุณ Birjolaxew


คำตอบเดิม: 44 ไบต์โดยไม่มีข้อกำหนด STDOUT

i=>[...i].filter(c=>Math.random()>.2).join``

เนื่องจากคุณไม่ได้ใช้ชื่อของฟังก์ชั่นที่คุณจะได้รับอนุญาตให้เพียงแค่ให้การทำงานของตัวเอง การลบf=ทำให้คุณลดลงเหลือ 44 ไบต์ นอกจากนี้คุณยังสามารถอินพุต / เอาต์พุตเป็นอาเรย์ซึ่งควรจะช่วยให้คุณประหยัดได้ไม่น้อย
— Birjolaxew

@Birjolaxew ผมไม่แน่ใจ แต่ที่ผมเข้าใจว่ามันเป็นคำถามที่ไม่อนุญาตให้ใช้ของแถวถ่านถ้าภาษาที่มีสตริง
— jonatjano

ใช่แอนดรูว์แก้ไขคำถามพร้อมข้อกำหนดเพิ่มเติมหลังจากความคิดเห็นของฉัน สิ่งนี้มักจะขมวดคิ้วเพราะมันทำให้คำตอบที่ถูกต้องก่อนหน้านี้ไม่ถูกต้อง (ในกรณีนี้มันยังเป็นที่ถกเถียงกันอยู่ว่าคำตอบเริ่มต้นของคุณจะตรงกับความต้องการ
— Birjolaxew

อะไรjoin``หมายถึง? ไม่พบในข้อมูลจำเพาะ (เพราะฉันไม่รู้จริงๆว่ามันคืออะไร)
— nick zoum

1
@nickzoum ใน es6 เทียบเท่ากับjoin("") mdn revelent page
— jonatjano

2

สกาลา , 51 46 30 ไบต์

s=>s.flatMap(x=>if(math.random>.2)Some(x)else None)

ลองออนไลน์!

PS เช่นเดียวกับโซลูชันอื่น ๆ ความน่าจะเป็นที่จะทิ้งถ่านคือ 20%

ปรับปรุง:

-5 ไบต์โดยใช้ String แทน Option [String] ใน flatMap

s=>s.flatMap(x=>if(math.random>.2)x+""else "")

30 ไบต์โดยใช้ตัวกรอง

s=>s.filter(x=>math.random>.2)

1
คุณสามารถโกน 7 ไบต์โดยการเปลี่ยนscala.math.randomไปmath.randomและจะ0.2 .2เคล็ดลับที่ดีในการใช้ ^ เช่นนั้น
— Kjetil S.

@ KjetilS ขอบคุณ ฉันยังโพสต์ตัวอักษรฟังก์ชั่นแทนการกำหนดฟังก์ชั่นเป็นวิธีการแก้ปัญหา เป็นที่ยอมรับตามนี้: codegolf.stackexchange.com/questions/3885/…
— ดร. วายวิทย์

2

C # (Visual C # Interactive คอมไพเลอร์) , 71 ไบต์

var y=new Random();foreach(var k in ReadLine())if(y.Next(5)<4)Write(k);

ลองออนไลน์!


ฉันคิดว่า <1 กินมากเกินไป อาจ <3 หรือ <4 ตรงกับพารามิเตอร์ของปัญหา อย่างไรก็ตามสิ่งนี้ไม่ได้เปลี่ยนความยาวของรหัส
— Luca

ฉันยังไม่ได้ตั้งโปรแกรมใน C # ในขณะนี้ แต่ทำไมถึงไม่new Random().Next(5)สามารถทำได้โดยตรง
— Kevin Cruijssen

1
@KevinCruijssen เพราะจะใช้เมล็ดเดียวกันสำหรับแต่ละหมายเลขดังนั้นแต่ละหมายเลขจะเหมือนกัน เพียงลองด้วยnew Random().Next(5)สิ่งที่คุณจะได้รับก็คือข้อมูลทั้งหมดหรือไม่
— ศูนย์รวมแห่งความไม่รู้

1
@KevinCruijssen เมื่อใช้new Random()งานค่าเริ่มต้นคือ Environment.TickCount ซึ่งจะเพิ่มขึ้นทุกมิลลิวินาที หากพวกเขาทั้งหมดถูกสร้างในขีด จำกัด มิลลิวินาทีเดียวกันพวกเขาทั้งหมดจะมีเมล็ดเดียวกัน คำตอบนั้นใช้เพียงอินสแตนซ์เดียวของ Random และเมื่อมันถูกเรียกว่าจะอัพเดตค่าเมล็ดภายใน - ดังนั้นทุกครั้งที่มีการเรียกใช้ Next () จะสร้างค่าเอาต์พุตที่แตกต่างกัน สุทธิหลัก แต่ใช้ RNG เดี่ยวในการสร้างเมล็ดพันธุ์จึงไม่ได้มีปัญหานี้
— Zac Faragher

1
@BenjaminUrquhart คงที่ แต่เพิ่ม 26 ไบต์ นอกจากนี้หนึ่งสามารถโต้เถียงไม่ได้พูดว่าการป้อนข้อมูลจะต้องมาจากSTDINแต่restricted to STDIN or closest equivalentและข้อโต้แย้งการทำงานอาจจะเทียบเท่าที่ใกล้เคียงที่สุด แต่ฉันจะไม่ทำอย่างนั้น
— ศูนย์รวมของความไม่รู้


1

C (gcc) , 50 ไบต์

โปรแกรมนี้มีโอกาส 20% ที่จะส่งจดหมาย น่าเสียดายที่ตัวสร้างตัวเลขสุ่มไม่ได้ถูก seeded ดังนั้นคุณจะได้รับลำดับที่เหมือนกันในการวิ่งแต่ละครั้ง โดยพื้นฐานแล้วกลอุบายเพียงอย่างเดียวคือการคว่ำอักขระอินพุตเพื่อหยุดการวนซ้ำบน EOF

main(c){for(;c=~getchar();rand()%5&&putchar(~c));}

ลองออนไลน์!

C (gcc) , 64 59 ไบต์

ขอบคุณ ceilingcat สำหรับ -5 ไบต์

หากคุณต้องการ RNG seeded ในการรันแต่ละครั้ง

main(c){for(srand(&c);c=~getchar();rand()%5&&putchar(~c));}

ลองออนไลน์!


คุณไม่จำเป็นต้องใช้main()สำหรับการส่งรหัสกอล์ฟคุณยังสามารถกำหนดฟังก์ชันที่ต้องการตามที่ต้องการ f(c){...}ดังนั้นคุณสามารถเขียน
— G. Sliepen

1

Lua , 69 68 ไบต์

for c in io.lines(nil,1)do io.write(math.random()>.2 and c or '')end

ลองออนไลน์!

ค่อนข้างตรงไปตรงมา แต่ดูเหมือนว่าจะเป็นเวอร์ชั่นที่สั้นที่สุด: วนซ้ำ stdin char โดย char (ด้วยio.lines…ชื่อนั้นทำให้เข้าใจผิด) จากนั้นตามค่าสุ่มไม่ว่าจะพิมพ์สตริงใดสตริงหนึ่งหรือเปล่า (เช่นไม่มีอะไร)


1

ชวา

ไม่สิ้นสุด: 82 ไบต์

v->{for(int i;;i=System.in.read(),System.out.print(Math.random()<.2?"":(char)i));}

การยุติ (TIO): 105 ไบต์

v->{var n=System.in;for(int i;n.available()>0;i=n.read(),System.out.print(Math.random()<.2?"":(char)i));}

การจัดการกับ stdout จำเป็นจริงๆหรือ? คำตอบอื่น ๆ เพียงสร้างฟังก์ชั่นเพียงแค่แปลงสตริง ดูเหมือนว่าไม่ยุติธรรมต่อ Java หากโซลูชัน C #นี้ถูกต้องแสดงว่าs->s.filter(c->Math.random()<.2)เป็นเช่นนั้น
— โฮลเจอร์

@ โฮลเกอร์Input is restricted to STDIN or closest equivalent.และOutput must be through STDOUT or the closest equivalent. If your language does have STDOUT, do not output in any other way.ไม่เลยคำตอบนั้นไม่ถูกต้อง
— Benjamin Urquhart

1

Zsh , 53 41 ไบต์

-12ขอบคุณ GammaFunction

41 ไบต์: ลองออนไลน์!

แปลงอินพุตเป็นอาร์เรย์ของอักขระจากนั้นพยายามพิมพ์แต่ละองค์ประกอบcยกเว้นว่ามันถูกกินโดยการ((RANDOM%4))ประเมินเป็นเท็จ!

for c (${(s::)1})((RANDOM%4))&&echo $c\\c

53 ไบต์: ลองออนไลน์!

ตรงไปตรงมามากขึ้น แต่ verbose ซ้ำผ่านสายยาว

for ((;i<$#1;i++)){((RANDOM%4>0))&&echo "${1[i]}\c";}

1
การใช้งานอย่างชาญฉลาด\cฉันคงไม่จำได้! ยังมีการปรับปรุงบางอย่างที่จะทำ ...
— GammaFunction

การใช้RANDOMและการแปลงอาเรย์เป็นไปอย่างฉลาดและชาญฉลาด
— roblogic

1

Zsh , 50 ไบต์

for c (${(s::)"$(<&0)"})
((RANDOM%5))&&echo -nE $c

ลองออนไลน์!

คล้ายกับคำตอบของ RobLogic แต่ทำตามข้อกำหนดอินพุตอย่างใกล้ชิดยิ่งขึ้นและทำงานกับอินพุตด้วยแบ็กสแลช

"$(<&0)"แทนที่จะเป็น"<&0"หรือ$(<&0)เพราะอันแรกไม่สามารถใช้แทนได้และอันที่สองกินบรรทัดใหม่ -nEธงที่มีความจำเป็นเพื่อป้องกันไม่ให้ทับขวาจากการถูกแยกวิเคราะห์เป็นลำดับหนีและเพื่อป้องกันการขึ้นบรรทัดใหม่ถูกแทรก

echo -nE


1

MathGolf 5 ไบต์

æƒ√∞*

ลองออนไลน์!

คำอธิบาย

æ       foreach character...
 ƒ      random float in range [0,1)
  √     take square root (making P(x < 0.5) = 0.25)
   ∞    pop a, push 2*a
    *   repeat character int(x) times

ตัวละครแต่ละตัวจะถูกทำซ้ำ 0 หรือ 1 ครั้งขึ้นอยู่กับค่าสุ่ม เนื่องจากค่าที่คาดไว้หลังรากที่สองจะถูกเลื่อนมีความน่าจะเป็น 25% ที่ตัวละครแต่ละตัวจะถูกลบออก

ทางเลือก 5-byter

gÉ;4w

กรองอักขระตามตัวเลขสุ่มใน [0, 4] เนื่องจากวิธีการทำงานของการกรองฉันจึงต้องละทิ้งอักขระจริงภายในลูปตัวกรองซึ่งเพิ่ม 1 ไบต์


0

GFortran , 120 ไบต์

ไม่เลวเกินไปถ้าเราใช้RAN()ฟังก์ชั่นที่เลิกใช้แล้วซึ่งเป็นแบบหลอก -สุ่มนั่นคือคุณจะได้รับลำดับที่เหมือนกันทุกครั้ง วิธีการที่เหมาะสมในการสร้างตัวเลขสุ่มใน gfortran อยู่กับCALL RANDOM_SEED()และCALL RANDOM_NUMBER(R)แต่ที่มากของไบต์!

character(99)S;read(*,'(A)')S;do i=1,len_trim(S)
if(ran(0)*5.gt.1)then;write(*,'(A)',advance="no")S(i:i)
endif;enddo;end

ลองออนไลน์!


1
อนุญาตให้ใช้การสุ่มหลอกหากเป็นวิธีที่ใกล้เคียงที่สุดที่คุณต้องดำเนินการสุ่มจับ
— แอนดรู

0

Oracle SQL, 133 ไบต์

select listagg(decode(sign(dbms_random.value-0.2),1,substr(x,level,1)))within group(order by level)from t connect by level<=length(x)

มันทำงานได้โดยมีสมมติฐานว่าข้อมูลอินพุตถูกเก็บไว้ในตาราง t (x) เช่น

with t(x) as (select 'The cat ate my homework' from dual)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.