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


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 ไบต์

การ-fตั้งค่าสถานะ "เรียกใช้โปรแกรมในแต่ละองค์ประกอบในอินพุตแรกส่งออกอาร์เรย์ขององค์ประกอบที่ส่งกลับค่าความจริง" ส่งกลับตัวเลขสุ่มระหว่าง 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/21+1/2p2=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¨

ลองออนไลน์!

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

? จำนวนเต็มแบบสุ่มช่วง 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.