Roulette Rusia

28

Tulis program yang memainkan Roulette Rusia!

Jika program dimulai,

  • harus ada peluang 5 dalam 6 untuk berakhir secara normal setelah mencetak "Saya selamat!"
  • harus ada peluang 1 dalam 6 dari program mogok. (kesalahan segmentasi, dll.)

Tidak ada input, dan tidak ada output lain yang diizinkan.

Keacakan harus adil: harus memiliki distribusi probabilitas yang seragam. Ini berarti variabel yang tidak diinisialisasi (atau RNG tanpa seed) MOD 6 tidak akan cukup.

Jika solusinya hanya bekerja dengan satu sistem / platform operasi khusus, Anda akan menerima penalti 6 byte untuk skor.

Kode terpendek menang, tidak lebih cepat dari 10 hari setelah jawaban valid pertama.

vsz
sumber
1
Bisakah kita mengandalkan runtime yang mendasari untuk menjadi adil, bahkan jika tidak dijamin secara eksplisit dalam dokumentasi? Misalnya Python randrange(5)mungkin diimplementasikan sebagai randrange(MAX_INT)%6.
ugoren
Untuk menginspirasi kreativitas, Anda dapat mempertimbangkan untuk memberikan bonus pada solusi yang tidak bergantung pada pembagian dengan nol.
primo
Mungkin kata bonus harus melibatkan pembagian skor dengan 2.
Joe Z.
1
@ JoZeng: itu terlalu banyak. Biasanya Anda dapat membuatnya menjadi kesalahan yang berbeda, seperti referensi pointer nol, dll. Dengan biaya hanya beberapa karakter.
vsz
Saya melihat. Saya tidak terlalu berpengalaman dalam menciptakan kondisi penilaian untuk teka-teki kode golf, jadi saya masih belajar hal-hal seperti itu.
Joe Z.

Jawaban:

4

05AB1E , 13 12 byte

6LΩiFë“IЖd!

-1 byte terima kasih kepada @Emigna .

05AB1E sebenarnya tidak bisa membuat kesalahan sama sekali, tetapi karena versi baru 05AB1E masih memiliki beberapa masalah dibandingkan dengan versi legacy, saya bisa mengambil keuntungan saya untuk kesalahan untuk tantangan ini.

Cobalah online.

Penjelasan:

6L          # Create the list [1,2,3,4,5,6]
  Ω         # Get a random choice from this list
   i        # If it is 1:
    F       #  Do a ranged loop, which currently results in a "(RuntimeError) Could not
            #  convert  to integer." error when no argument is given
   ë        # Else:
    IЖd!  #  Push dictionary string "I survived!" (which is output implicitly as result)

Lihat ini ujung 05AB1E saya (bagian Cara menggunakan kamus? ) Untuk memahami mengapa “IЖd!adalah "I survived!".

Kevin Cruijssen
sumber
Sepertinya 5ÝΩz“IЖd!harus bekerja tetapi ternyata 1 / 0 = 0.
Magic Gurita Guci
1
@ MagicOctopusUrn Ya, 05AB1E hampir tidak pernah kesalahan .. Terlepas dari builtin cukup lama .0yang digunakan untuk melempar divisi dengan 0 kesalahan ke STDERR dalam versi lama 05AB1E, saya bahkan tidak tahu bagaimana kesalahan dalam warisan 05AB1E sama sekali . Versi baru masih memiliki cukup banyak kesalahan namun, yang saya ambil untuk kesempatan saya di sini. ;)
Kevin Cruijssen
1
Aku merindukan yang lama .0, pada lebih dari satu kesempatan itu membuat seseorang berkata , "Wat ... Kenapa itu perintah?"
Magic Gurita Guci
11

PHP 38 byte

<?~$$s[rand(+$s=sssss,5)]?>I survived!

Menempatkan +sebelum string non-numerik akan dievaluasi 0. Harus rand(0,5)kembali 5, $s[rand(0,5)]akan menjadi string kosong (karena $shanya panjang lima karakter), dan selanjutnya $$s[rand(0,5)]akan menjadi variabel yang tidak diinisialisasi. Mencoba mengambil inversi akan berhenti pada Jenis Operand yang Tidak Didukung. Nilai lain apa pun, 0-4akan kembali s, dan karena $ssudah ditentukan, Anda akan bertahan.

Catatan: pada versi php 4.2.0, generator angka acak diunggulkan secara otomatis .

primo
sumber
6

R 30

"I survived!"[6*runif(1)<5||Z]

Satu dari enam, itu akan menimbulkan kesalahan: Error: object 'Z' not found

flodel
sumber
6

Ruby, 24-28

p rand(6)<5?"I survived!":1/0

Kira-kira setiap 6 kali, ada a ZeroDivisionError

Bahkan ada versi yang lebih pendek dengan 24 karakter (Terima kasih kepada ugoren dan histokrat):

6/rand(6);p"I survived!"

Jika Anda tidak menerima "dalam output, maka saya perlu 3 karakter lagi. Opsi pertama ( puts) menambahkan baris baru, yang kedua ( $><<) tidak membuat baris baru:

6/rand(6);puts"I survived!"
6/rand(6);$><<"I survived!"

Ada pertanyaan tentang angka acak di ruby ​​di SO . Seed dengan srandsecara otomatis dipanggil dengan seed yang berasal dari waktu saat ini jika belum dipanggil. (lihat komentar Julians )


Primo memiliki ide untuk bonus tambahan untuk solusi yang tidak bergantung pada pembagian dengan nol .

Solusi pertama saya dapat disingkat (28 karakter) dengan a undefined local variable or method ``a' for main:Object (NameError)

p rand(6)<5?"I survived!":a
knut
sumber
Bisa lebih pendek dengan 6/rand(6).
ugoren
Apakah Ruby menambakan RNG-nya secara otomatis?
vsz
Anda dapat memangkas tiga karakter lainnya dengan menghapus aliran kontrol:1/rand(6);p "I survived!"
histokrat
@ugoren / histokrat Terima kasih atas petunjuk Anda, saya menyesuaikan solusi saya.
Knut
Byte lain untuk Anda: tidak ada ruang putih diperlukan antara pdan "I survived!". Menurut hitungan saya, itu hanya 24 byte.
primo
6

Dyalog APL - 25 22 21 20 Charachters

'I Survived!'⊣1÷6⊤?6

Mencetak DOMAIN ERRORsebagai kesalahan, karena pembagian dengan nol.

Solusi tanpa pembagian terpendek menurut nol yang dapat saya buat adalah 23 karakter.

('I Survived!'1)[~6⍷?6]

Itu melempar INDEX ERROR

Coba di sini

Font APL di sini

TuanZander
sumber
Saya ingin menerimanya, tetapi sepertinya tidak berhasil. Beberapa kali mencetak " I survived", tetapi setelah mencetak DOMAIN ERRORsekali, ia hanya mencetak saja. Bahkan jika saya memuat ulang situs sepenuhnya, itu tidak akan pernah bertahan lagi.
vsz
@ vsz Sungguh aneh ... Ini bekerja di APL WS Dyalog saya, dan saya ingat mengujinya dengan TryAPL ketika saya selesai. Masih berfungsi pada juru bahasa saya, tetapi tidak di situs web. Jika ini membantu: dl.dropbox.com/u/9086539/apl.png
MrZander
1
1÷0adalah DOMAIN ERRORdi Dyalog tetapi dalam ngn / apl itu . Hasil dari ?6adalah 1..6 when ⎕IO←1(default di Dyalog) dan 0..5 when ⎕IO←0(hanya opsi di ngn / apl). Dalam Dyalog, PRNG dapat diunggulkan dengan pengaturan ⎕RL. Awalnya memiliki beberapa nilai standar yang telah ditentukan. Jika Anda mengatur ⎕RL←0, PRNG diunggah kembali cukup adil oleh OS. TryAPL adalah menggunakan Dyalog dan tidak mendukung ?fungsi .
ngn
1
Sangat mungkin ada sesuatu yang berubah saat itu, kami sesekali memperbarui perangkat lunak di balik TryAPL atau bereksperimen dengan fitur-fitur situs web. Apakah saya berafiliasi? Jika saya memberi tahu Anda, saya harus membunuh Anda ... well, dengan probabilitas 1 ÷ 6 :)
ngn
1
Ngomong-ngomong, inilah solusi 18-karakter: 'Aku selamat!' ⊣ ÷ ⍟? 6
ngn
5

Python, 96

from ctypes import*
from random import*
randrange(5)or pointer(c_int())[9**9]
print'I survived!'

Jika randrange(5)mengembalikan 0, maka python akan macet karena kesalahan segmentasi.

grc
sumber
5

vba, 27

?1/int(6*rnd),"I Survived!"

digunakan di jendela langsung.
Pada kegagalan, jendela kesalahan yang menyatakan:
pembagian dengan nol
muncul

SeanC
sumber
Tidak ada !dalam teks.
steenslag
@steenslag, diperbaiki
SeanC
@SeanCheshire Saya telah menawarkan alternatif untuk jawaban Anda.
Gaffi
5

Befunge - 48 karakter

 v >91+"!devi"v
/?>?<v"I surv"<
 / / :
   :,_@#

Satu-satunya keacakan Befunge adalah ?operator, yang mengirim Anda menuju salah satu dari empat arah yang memungkinkan ( 1/4kesempatan). Dengan memblokir satu atau dua arah, Anda memiliki 1/3atau 1/2peluang, dan dengan menggabungkan ini, Anda mendapatkan 1/6kesempatan untuk keluar dari program "hidup".

Program macet dengan melakukan divive-by-zero. Saya kira itu implementasi khusus apa yang akan terjadi (di Wikipedia dikatakan program harus meminta jawaban yang diinginkan), tetapi befungee.py semacam crash, atau keluar dengan marah:

$ for i in {1..6} ; do ./befungee.py roulette.befunge ; done
Error (1,2): integer division or modulo by zero
Error (3,2): integer division or modulo by zero
Error (1,2): integer division or modulo by zero
I survived!
Error (0,1): integer division or modulo by zero
I survived!
daniero
sumber
5

J, 18

'I survived!'[q:?6

Gagal domain errorsaat mencoba memfaktorkan 0.

randomra
sumber
Apakah J seed RNG-nya secara otomatis?
vsz
@ vsz Ya, dengan ?. Anda dapat menggunakan ?.untuk benih tetap.
randomra
4

C, 67 65 62 karakter

rand()%8tidak kehilangan keadilan. Division crash untuk t=0, memberikan true untuk 1 dan 2 (coba lagi), memberikan false untuk 3..7 (selamat).
EDIT: Versi sebelumnya menggunakan variabel sementara, yang akhirnya benar-benar tidak diperlukan. 2/(rand()%8)mengimplementasikan kedua kondisi yang dibutuhkan.

main(){
        for(srand(time(0));2/(rand()%8););
        puts("I survived!");
}
ugoren
sumber
Itu benar. "tidak ada output lain yang diizinkan"
vsz
@vsz, entah bagaimana melewatkannya. Tapi bagaimanapun, dengan gcc / Linux tidak mencetak apa pun. Selain itu, dengan patuh pada standar, persyaratan ini tidak mungkin, karena perilaku yang tidak terdefinisi dapat mencetak apa pun.
ugoren
@ vsz, diperbaiki sekarang - tidak ada output tambahan dalam hal apa pun. Juga berfungsi dengan optimisasi, dan 2 karakter lebih pendek.
ugoren
4

T-SQL 56 44 40 + 6

 if 1/cast(ceiling(rand()*6)-1as int)<2print'I Survived!'

Kredit Sean Cheshire untuk memanggil para pemeran sebagai tidak perlu

 if 1/ceiling(rand()*6-1)<2print'I Survived!'

Ucapkan pesan pribadi dari Sean Cheshire untuk saran mengubah langit-langit ke lantai.

 if 1/floor(rand()*6)<1print'I Survived!'

Death Err Msg: Msg 8134, Level 16, State 1, Line 3 Divide by zero error found.

gratis
sumber
1
-1dan ceilingtidak dibutuhkan. castakan memotong
SeanC
Saya sedang menguji apakah plafon dapat dihapus tanpa melanggar persyaratan untuk distribusi seragam, dokumen mengatakan bahwa rand () mengembalikan nilai float 0 hingga 1.
freewary
Saya ingin tahu apakah langit-langit dapat dihapus dari entri pertama saya. Saya tidak dapat menentukan dari dokumentasi T-SQL apakah fungsi rand () akan mengembalikan 1 atau tidak. Jadi saya menjalankan loop sekitar 50 juta kali menguji fungsi rand (), tidak pernah sekalipun mengembalikan 1. Tapi, menghapus langit-langit dari entri pertama saya masih akan menjadi 47 byte, jadi entri kedua saya masih lebih pendek. Jaga langit-langit dan singkirkan gips.
freewary
Saya ragu Anda telah menguji skrip ini lebih dari 20 kali. Ini tidak selalu mengembalikan hasil yang diharapkan selalu. 1 dalam 6 ini akan gagal dan tidak mengembalikan output. Sintaks ini akan berfungsi: 0 / floor (rand () * 6) = 0
t-clausen.dk
3

Javascript, 42

(Math.random()*6|0)?alert('i survived!'):b

Bitwise atau lantai hasil perkalian dengan demikian nilai antara 0 dan 5 hasil. 0 secara implisit dilemparkan ke false, jadi dalam 5 dari 6 kasus peringatan muncul dalam kasus ke-6 tertentu bdirujuk, menabrak proses.

zaphod1984
sumber
3

Menggunakan metode pembagian biasa dengan nol:

Versi Perl 5.8

1/(int rand 6)&&print "I survived!"

Versi Perl 5.10

1/(int rand 6)&&say "I survived!"

Jika gagal, ini akan menampilkan:

Illegal division by zero at -e line 1.

Menggunakan fungsi bless yang digunakan untuk membuat objek dalam perl.

Versi Perl 5.8

print (int rand 6?"I survived!":bless me);

Versi Perl 5.10

say (int rand 6?"I survived!":bless me);

Jika gagal, ini akan menampilkan:

Can't bless non-reference value at -e line 1.
xxfelixxx
sumber
3
beberapa saran: singkirkan tanda kurung, logika &&, dan ruang ekstra. gunakan ~~alih-alih intuntuk memaksa nilai integral. hasilnya adalah ini:1/~~rand 6;print"I survived!"
ardnew
3

GolfScript, 21 karakter

,6rand/;'I survived!'

Seperti sebagian besar jawaban, yang ini memiliki peluang satu dari enam untuk menabrak ZeroDivisionError. Solusi terpendek yang dapat saya kelola tanpa menggunakan pembagian dengan nol adalah 23 karakter:

5,6rand=+;'I survived!'

yang memiliki peluang 1/6 untuk menabrak undefined method `+' for nil:NilClass (NoMethodError).

(Ps. Ketika mengembangkan ini, saya menemukan apa yang mungkin menjadi bug dalam interpreter GolfScript: kode seperti 0,1>tampaknya meninggalkan nilnilai pada stack, yang nantinya akan merusak program jika Anda mencoba melakukan sesuatu dengan nilai itu kecuali menghapusnya dan buang saja ;. Sayangnya, fakta bahwa saya perlu menggunakan nilai entah bagaimana untuk memicu kerusakan berarti bahwa bahkan mengeksploitasi bug ini tidak membantu saya mendapatkan di bawah 23 karakter.)

Ilmari Karonen
sumber
Itu pasti tampak seperti bug. 5,5>daun []di tumpukan, yang mungkin apa yang harus dilakukan, tetapi 4,5>pergi nil. Jika Anda tidak menghapusnya, penerjemah akan benar-benar macet saat mencoba mengeluarkannya. Efek samping yang menarik adalah itu 4,6rand>+;'I survived!'menjadi solusi yang valid. Seseorang mungkin harus memberi tahu Flagitious.
primo
1
Saya melaporkan ini, dan telah diperbaiki (bersama dengan bug lain yang saya temukan) dalam versi terbaru dari interpreter GolfScript.
Ilmari Karonen
3

Python, 70 karakter

Dengan inspirasi dari jawaban grc.

from random import*
if randrange(5)<1:exec'()'*9**5
print'I survived!'

randrange (5) mengembalikan nilai antara 0 dan 5.
Jika mengembalikan 0, Python lumpuh saat mencoba mengeksekusi (ute) string kode yang berisi 9 ^ 5 set tanda kurung.

Joshua Sleeper
sumber
3

PHP - 30 byte

<?rand(0,5)?:~[]?>I survived!

Membutuhkan PHP 5.4+ untuk sintaks array pendek, gagasan operator yang tidak valid dicuri dari @primo tanpa malu-malu.

Seperti yang dinyatakan, rand()secara otomatis diunggulkan pada penggunaan pertama .

Leigh
sumber
Pembagian dengan nol tidak berhenti, itu hanya menghasilkan peringatan, serta teks 'Saya selamat!'. Juga, rand()%6bukan distribusi yang seragam, seperti 32768 = 2 (mod 6). Namun, rand(0,5)||~$auntuk 30 byte, dan juga akan bekerja dengan semua versi PHP (ekspresi kedua di ternary hanya opsional di 5.3.0+).
primo
@ primo Tebak saya hanya mencari jejak tumpukan ketika saya memeriksa pembagian dengan nol, tidak menyadari itu masih dicetak. Saya tahu singkatan terner adalah 5.3+, tapi saya benar-benar tidak tertarik mendukung versi lama :)
Leigh
Saya setuju dengan itu. Tidak ada argumen yang valid untuk terus menggunakan kurang dari 5.3 pada saat ini. 5.4, ​​saya masih bertahan untuk nomor revisi dua digit.
primo
1
Saya menghitung 29 byte.
Titus
3

Befunge, 38

v>25*"!devivrus I",,,,,,,,,,,@
?^
v
?^
<1

Cukup mudah. Crashing dilakukan dengan mendorong 1s ke stack sampai meluap. Saya melakukan beberapa upaya untuk memotong 11 koma tersebut dan menggantinya dengan beberapa loop yang lebih efisien untuk mencetak semuanya, tetapi tidak dapat membuatnya di bawah 11 karakter.

Perhatikan bahwa menghitung karakter di Befunge sedikit rumit ... Misalnya hanya ada satu karakter di baris ketiga, tapi saya menghitung karakter tambahan di sana karena eksekusi dapat berjalan melalui lokasi itu.

Joe K.
sumber
Saya percaya itu adalah rekor untuk koma paling berturut-turut yang pernah saya lihat dalam sebuah program.
Joe Z.
Dan kemudian saya melihat bagaimana Befunge benar-benar bekerja dan menggerakkan wajah saya.
Joe Z.
2

CMD Shell (Win XP atau yang lebih baru), 40 +6

Saya hanya melakukan ini karena DOS bukan sesuatu yang harus dipikirkan untuk kode golf, dan spasi adalah penting

set/a1/(%RANDOM% %% 6)&&echo I Survived!

Jika gagal, itu akan dicetak

Bagi dengan kesalahan nol.

SeanC
sumber
2

R, 50 44 42 36

ifelse(!is.na(sample(c(NA,1:5),1)),'I Survived!',)

ifelse(floor(runif(1,0,5))>0,'I Survived!',)

ifelse(floor(runif(1,0,5)),'I Survived!',)

ifelse(sample(0:5,1),'I Survived!',)

Pesan Death Err:

Kesalahan dalam ifelse (! Is.na (1 / sampel (c (NA, 1: 5), 1)), "I Survived!",): Argumen "no" tidak ada, tidak ada default

gratis
sumber
Saya mencoba R, dan tidak bisa gagal - if(1/0)"I Survived!"masih dicetak I Survived
SeanC
Tidak seperti bahasa lain, R tidak menganggap 1/0 sebagai kesalahan matematika dan tidak menghentikan eksekusi, ia hanya mengembalikan inf untuk 1/0. Saya pikir @vsz ingin kesalahan dalam putaran ini. Tetapi seandainya vsz menghitung NA sebagai kesalahan kematian, saya bisa menurunkan program saya menjadi 41 karakter: ifelse (sampel (c (NA, 1: 5), 1), 'I Survived',)
freewary
2

Emacs-Lisp, 42 karakter

(if (= (random 6) 5) 
    z (message "I survived!")
    )
dualitas
sumber
2

Javascript, 40 karakter

Dalam Javascript, trik bagi-oleh-nol bahkan tidak berfungsi: itu hanya mengembalikan Infinity. Oleh karena itu, merujuk variabel yang tidak ada:

alert(6*Math.random()|0?"I survived!":f)

Tidak terlalu pendek, meskipun menyenangkan :)

tommeding
sumber
2

PowerShell, 40 Karakter

IF(6/(Get-Random -Max 6)){'I Survived!'}

Pada Kegagalan: "Berusaha membagi dengan nol."

DBADon
sumber
Selamat datang di PPCG!
Laikoni
1
32 byte
mazzy
31 bytes
Veskah
2

TI-BASIC (TI-84 + / SE), 36 byte

startTmr→rand:1/(1<randInt(1,6:"I survived!

Tidak ada input, seperti yang ditentukan tantangan.
Keluaran adalah I survived!jika berhasil, DIVIDE BY 0kesalahan sebaliknya.

Layar DIVIDE BY 0kesalahan terlihat seperti berikut:

ERR:DIVIDE BY 0
1:Quit
2:Goto

Memilih salah satu opsi (dan kembali ke layar beranda jika 2dipilih) akan muncul Errorsetelah panggilan program.

Contoh:

prgmCDGFE
           Error
prgmCDGFE
I survived!
prgmCDGFE
I survived!
prgmCDGFE
           Error

Penjelasan:

startTmr→rand:1/(1<randInt(1,6:"I survived!   ;full program

startTmr→rand                                 ;store the current time into "rand"
                                              ; this is necessary because "rand" is 0 after
                                              ; factory reset, the default state for TI-BASIC
                                              ; submissions
                   randInt(1,6                ;get a random integer in [1,6]
                 1<                           ;is greater than 1?  1 if true, 0 if false
              1/(                             ;divide 1 by the result
                                              ; throws "DIVIDE BY 0" error if result was
                                              ; false
                               "I survived!   ;leave this string in "Ans"
                                              ;implicitly print "Ans"

Catatan:

  • TI-BASIC adalah bahasa tokenized. Hitungan byte tidak sama dengan jumlah karakter.

  • Huruf kecil masing-masing dua byte .

    • Huruf kecil dapat diaktifkan menggunakan ini program perakitan.
  • startTmradalah perintah hanya pada kalkulator TI-84 + dan TI-84 + SE. Kalkulator tersebut memiliki sistem operasi yang berbeda.

Tau
sumber
2

Python, 53 byte

Berikut ini adalah indeks python 53 byte pendek di luar jangkauan program:

import time
[0][time.time()%6<1]
print("I survived!")
Alexander Wahlsten
sumber
Hai dan selamat datang. Harap dicatat bahwa dalam aturan untuk tantangan ini, dinyatakan "MOD 6 tidak akan cukup." Meskipun saya tidak terbiasa dengan Python, saya merasa Anda menggunakan Modulo di sini.
Shaun Bebbers
1
@ShaunBebbers Kutipannya adalah "Ini berarti variabel yang tidak diinisialisasi (atau RNG tanpa seed) MOD 6 tidak akan mencukupi," tetapi posting meta ini mengatakan bahwa modulo waktu saat ini cukup untuk PRNG untuk kode-golf
Stephen
Kesalahpahaman saya saat itu.
Shaun Bebbers
1

Jawa, 149

public class R{public static void main(String[]s){int[]a={1,1,1,1,1};System.out.println(a[new java.util.Random().nextInt(7)]>0?"I survived!":"");}}

Gagal dengan kesalahan "Array out of bounds". Berhasil mencukur beberapa karakter dengan menggunakan objek Acak anonim (tanpa impor).

Nuh
sumber
1

Groovy, 39

1/new Random().next(6);print"I survived!"

Pilihan nomor acak antara 0 dan 5 inklusif. Jika 0, lemparkan sebuah angka dengan pengecualian nol.

Will Lp
sumber
1

Python (56), Haskell (77)

Ini macet dengan IndexError ketika nomor yang dihasilkan adalah 1:

dari impor acak *
print ['I selamat!'] [1 / randint (1,7)]

Solusi Haskell memiliki ide yang sama:

impor System.Random
main = putStrLn. (["Saya selamat!"] !!). div 1 = << randomRIO (1,6)
Lambda Fairy
sumber
1

Python, 59 55 53, 65 59 56

import os
1/(ord(os.urandom(1))%6)
print"I survived!"

ZeroDivisionErrorketika ord(os.urandom(1))%6dievaluasi menjadi 0

import os
print(["I survived!"]*5)[ord(os.urandom(1))%6]

IndexErrorketika ord(os.urandom(1))%6dievaluasi menjadi 5

Raufio
sumber
Simpan 5 karakter dengan mengubah impor: import random as rlalu gunakanr.randint
Steven Rumbalski
1
Atau simpan 8 karakter dengan mengubah impor import os, lalu gunakan ord(os.urandom(1))%6sebagai int acak Anda.
Steven Rumbalski
Simpan 1 karakter dengan menghapus spasi setelahnya print.
Steven Rumbalski
1

VBA - 39/46

Saya tidak suka output numerik Sean Cheshire (meskipun masih jawaban yang bagus, secara teknis gagal No input, and no other outputs are allowed.dari spek ...), ditambah dia menggunakan /0, jadi di sini adalah alternatif saya:

?Mid("I Survived!",IIf(Int(6*Rnd),1,0))

Ini diselesaikan Run-time error '5': Invalid procedureketika mencoba untuk mencapai karakter 0 (VBA adalah pengindeksan berbasis 1).

n="I Survived!":If Int(6*Rnd) Then ?n Else ?-n

Ini diselesaikan Run-time error '13': Type mismatchketika menerapkan saklar negatif ke string.

Gaffi
sumber
1

Japt v1.4.5, 16 byte

6ö
ªí
`I s¨viv!

Cobalah

-1 byte terima kasih kepada @Shaggy!

Melempar TypeError: U.í is not a functionketika angka acak dalam kisaran [0,6)adalah 0.

dana
sumber
1
17 byte
Shaggy
Sebenarnya, itu mungkin ide untuk menggunakan v1.4.5 untuk ini, kalau-kalau ETH menambahkan N.í()metode ke v1.4.6.
Shaggy
Diperbarui - Japt berusaha keras untuk tidak crash pada program aneh. Saya mencoba mencari cara referensi variabel yang tidak ada (AZ didefinisikan), tetapi tidak mempertimbangkan memanggil metode yang tidak ada.
dana
Ya, N.í()adalah "pergi ke" saya untuk melempar kesalahan (dulu N.y()). Ada beberapa cara lain untuk mendapatkan kesalahan tetapi mereka jarang berguna.
Shaggy
Sekarang, mengapa saya tidak berpikir untuk menggunakan saluran ketiga ?! : \
Shaggy