April 09, 2015 Re: return the other functions of the void main() | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jack Applegame | On Thursday, 9 April 2015 at 12:57:26 UTC, Jack Applegame wrote:
>> I quite often have to write similar designs:
>>
>> -----
>> import std.stdio;
>>
>> void main() {
>>
>> auto a = [ 1, 2, 3, 4, 5 ];
>>
>> foreach (e; a) {
>> if (e == 4) {
>> writeln("Yes");
>> return;
>> }
>> }
>>
>> writeln("No");
>> }
>> -----
>>
>> But is not it easier to write :)
>>
>> import std.stdio;
>>
>> void main() {
>>
>> auto a = [ 1, 2, 3, 4, 5 ];
>>
>> foreach (e; a) {
>> if (e == 4) {
>> return writeln("Yes");
>> }
>> }
>>
>> writeln("No");
>> }
>
> import std.stdio;
> import std.algorithm;
> import std.array;
>
> void main() {
> auto a = [ 1, 2, 3, 4, 5 ];
> writeln(a.find(4).empty ? "No" : "Yes");
> }
import std.stdio;
void main() {
foreach (...) {
foreach (...) {
...
if (...) {
...
return writeln("Yes");
}
...
}
...
}
...
writeln("No");
}
No design can be completely arbitrary:
-----
import std.stdio;
void main() {
foreach (...) {
foreach (...) {
...
if (...) {
...
return writeln("Yes");
}
...
}
...
}
...
writeln("No");
}
|
April 09, 2015 Re: return the other functions of the void main() | ||||
---|---|---|---|---|
| ||||
Posted in reply to Dennis Ritchie | On Thursday, 9 April 2015 at 11:04:00 UTC, Dennis Ritchie wrote: > Hi, > Is it allowed in D similar designs? > > void main() { > import std.stdio; > return writeln("Hello, world!"); > } It seems that you can not do so because writeln() something back, which leads to RUNTIME_ERROR in DMD 2.066.1: OK: ----- import std.conv; import std.stdio; import std.string; void main() { int n = readln.strip.to!int; string s = readln.strip; foreach (from; 0 .. n) foreach (jump; 1 .. n) { bool ok; foreach (i; 0 .. 5) { int pos = from + i * jump; if (pos >= n || s[pos] != '*') { ok = true; break; } } if (!ok) return write("yes"); } write("no"); } ----- http://codeforces.ru/contest/526/submission/10641745?locale=en RUNTIME_ERROR: ----- import std.conv; import std.stdio; import std.string; void main() { int n = readln.strip.to!int; string s = readln.strip; foreach (from; 0 .. n) foreach (jump; 1 .. n) { bool ok; foreach (i; 0 .. 5) { int pos = from + i * jump; if (pos >= n || s[pos] != '*') { ok = true; break; } } if (!ok) return writeln("yes"); } writeln("no"); } ----- http://codeforces.ru/contest/526/submission/10641695?locale=en |
April 09, 2015 Re: return the other functions of the void main() | ||||
---|---|---|---|---|
| ||||
Posted in reply to Dennis Ritchie | On Thursday, 9 April 2015 at 16:02:01 UTC, Dennis Ritchie wrote:
> On Thursday, 9 April 2015 at 11:04:00 UTC, Dennis Ritchie wrote:
>> Hi,
>> Is it allowed in D similar designs?
>>
>> void main() {
>> import std.stdio;
>> return writeln("Hello, world!");
>> }
>
> It seems that you can not do so because writeln() something back, which leads to RUNTIME_ERROR in DMD 2.066.1:
>
> OK:
> -----
> import std.conv;
> import std.stdio;
> import std.string;
>
> void main() {
>
> int n = readln.strip.to!int;
> string s = readln.strip;
>
> foreach (from; 0 .. n)
> foreach (jump; 1 .. n) {
> bool ok;
> foreach (i; 0 .. 5) {
> int pos = from + i * jump;
> if (pos >= n || s[pos] != '*') {
> ok = true;
> break;
> }
> }
> if (!ok)
> return write("yes");
> }
>
> write("no");
> }
> -----
> http://codeforces.ru/contest/526/submission/10641745?locale=en
>
> RUNTIME_ERROR:
> -----
> import std.conv;
> import std.stdio;
> import std.string;
>
> void main() {
>
> int n = readln.strip.to!int;
> string s = readln.strip;
>
> foreach (from; 0 .. n)
> foreach (jump; 1 .. n) {
> bool ok;
> foreach (i; 0 .. 5) {
> int pos = from + i * jump;
> if (pos >= n || s[pos] != '*') {
> ok = true;
> break;
> }
> }
> if (!ok)
> return writeln("yes");
> }
>
> writeln("no");
> }
> -----
> http://codeforces.ru/contest/526/submission/10641695?locale=en
Try running your code somewhere where you can actually see the output properly. RUNTIME_ERROR isn't something I recognise from D.
|
April 09, 2015 Re: return the other functions of the void main() | ||||
---|---|---|---|---|
| ||||
Posted in reply to John Colvin | On Thursday, 9 April 2015 at 16:55:00 UTC, John Colvin wrote: > Try running your code somewhere where you can actually see the output properly. RUNTIME_ERROR isn't something I recognise from D. Operates a code normally, but still gives the error: http://ideone.com/kDHMk5 |
April 09, 2015 Re: return the other functions of the void main() | ||||
---|---|---|---|---|
| ||||
Posted in reply to Dennis Ritchie | On Thursday, 9 April 2015 at 17:08:44 UTC, Dennis Ritchie wrote: > Operates a code normally, but still gives the error: > http://ideone.com/kDHMk5 I think it has something to do with Vindovs :) ----- http://dpaste.dzfl.pl/4c5bb9dd0ffa |
April 09, 2015 Re: return the other functions of the void main() | ||||
---|---|---|---|---|
| ||||
Posted in reply to Dennis Ritchie | On Thursday, 9 April 2015 at 17:38:42 UTC, Dennis Ritchie wrote:
> I think it has something to do with Vindovs :)
*Windows
|
April 10, 2015 Re: return the other functions of the void main() | ||||
---|---|---|---|---|
| ||||
Posted in reply to Dennis Ritchie | On Thursday, 9 April 2015 at 17:39:43 UTC, Dennis Ritchie wrote:
> On Thursday, 9 April 2015 at 17:38:42 UTC, Dennis Ritchie wrote:
>> I think it has something to do with Vindovs :)
>
> *Windows
Indeed, you can test it on Windows locally by running a .cmd file such as:
-----
a.exe
echo %ERRORLEVEL%
-----
With dmd 2.066 (as on Codeforces), it gives me non-zero exit code.
With dmd 2.067.0, the return code seems to always be zero.
|
Copyright © 1999-2021 by the D Language Foundation