猿问

如何将 PHP 代码转换为 C# 代码?

我正在尝试在我的 C# asp.net core 应用程序中创建一个锦标赛括号系统。我发现这个锦标赛分组放置算法帖子和 RWC 的答案正是我所需要的,因为它还包括轮空。

我遇到的问题是将这段代码翻译为 c#:

<?php


define('NUMBER_OF_PARTICIPANTS', 16);


$participants = range(1,NUMBER_OF_PARTICIPANTS);

$bracket = getBracket($participants);

var_dump($bracket);


function getBracket($participants)

{

    $participantsCount = count($participants);  

    $rounds = ceil(log($participantsCount)/log(2));

    $bracketSize = pow(2, $rounds);

    $requiredByes = $bracketSize - $participantsCount;


    echo sprintf('Number of participants: %d<br/>%s', $participantsCount, PHP_EOL);

    echo sprintf('Number of rounds: %d<br/>%s', $rounds, PHP_EOL);

    echo sprintf('Bracket size: %d<br/>%s', $bracketSize, PHP_EOL);

    echo sprintf('Required number of byes: %d<br/>%s', $requiredByes, PHP_EOL);    


    if($participantsCount < 2)

    {

        return array();

    }


    $matches = array(array(1,2));


    for($round=1; $round < $rounds; $round++)

    {

        $roundMatches = array();

        $sum = pow(2, $round + 1) + 1;

        foreach($matches as $match)

        {

            $home = changeIntoBye($match[0], $participantsCount);

            $away = changeIntoBye($sum - $match[0], $participantsCount);

            $roundMatches[] = array($home, $away);

            $home = changeIntoBye($sum - $match[1], $participantsCount);

            $away = changeIntoBye($match[1], $participantsCount);

            $roundMatches[] = array($home, $away);

        }

        $matches = $roundMatches;

    }


    return $matches;


}


function changeIntoBye($seed, $participantsCount)

{

    //return $seed <= $participantsCount ?  $seed : sprintf('%d (= bye)', $seed);  

    return $seed <= $participantsCount ?  $seed : null;

}


?>

我尝试将每一行 PHP 行翻译为 C# 等效行。然而,这个片段让我停下了脚步:

我不明白$roundMatches[]想要实现什么目标。是重新创建数组吗?是设置指针吗?不知道。我编写的 C# 版本为每场比赛提供了错误的种子号码。


慕莱坞森
浏览 157回答 1
1回答

慕后森

它基本上是一样的array_push例子$var[]&nbsp;=&nbsp;"element&nbsp;1"; $var[]&nbsp;=&nbsp;"element&nbsp;2"; print_r($var);将输出&nbsp;Array ( [0] => element 1 [1] => element 2 )如果你想在 c# 中做同样的事情,我想你必须使用myList.add("element")
随时随地看视频慕课网APP
我要回答