- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
#!/usr/bin/perl -w
use strict;
my $enchant_num=1;
my $tries_num=0;
print "Please, enter safe enchant lvl:\n";
my $safe_enchant_num=<STDIN>; chomp $safe_enchant_num;
print "Please enter maximum enchant lvl:\n";
my $max_enchant_num=<STDIN>; chomp $max_enchant_num;
if($max_enchant_num=~/\d/)
{
if($max_enchant_num>$safe_enchant_num)
{
while($enchant_num<=$max_enchant_num)
{
if($enchant_num<=$safe_enchant_num)
{
while($enchant_num<=$safe_enchant_num)
{
print "Succesfully enchanted for +" . $enchant_num++ . "\r";
}
}
else
{
if(rand(100)<=66)
{
print "Succesfully enchanted for +" . $enchant_num++ . "\r";
}
else
{
print "Enchant failed for +" . $enchant_num++ . "\r";
$enchant_num=1;
$tries_num++;
}
}
}
}
}
else
{
print "\nInput is incorrect\n";
}
print "\nEnchanted for $max_enchant_num with: $tries_num fails.";
Lowezar 25.01.2013 11:24 # +2
zasedanie 25.01.2013 13:13 # +2
bormand 25.01.2013 13:52 # +2
> if($max_enchant_num=~/\d/)
Это не проверка на то, что ввели число, а проверка на то, содержит ли $max_enchant_num хотя бы одну цифру. А $safe_enchant_num вообще проверить забыли.
MAKAKA 10.07.2020 14:08 # 0
А чтобы не забыть переменные, я бы сделал так
bormand 25.01.2013 13:57 # +1
Dummy00001 25.01.2013 14:50 # +1
как по мне, главное говно в `rand(100)<=66`.
тут можно просто по входным данным и захардкодженой вероятности 0.66 аналитически (без циклов и прочего) вычислить вывод.
bormand 25.01.2013 15:03 # 0
guest 25.01.2013 19:04 # +1
http://goo.gl/l9IwS
MAKAKA 10.07.2020 14:25 # 0
TarasB 25.01.2013 15:06 # +1
Хотя бы так бы сделали ёпта
bormand 25.01.2013 15:22 # +2
LispGovno 25.01.2013 15:32 # −1
TarasB 25.01.2013 16:14 # +1
TarasB 25.01.2013 16:42 # +1