Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

Tôi đang gặp khó khăn khi cố gắng chuyển đổi chữ số La Mã thành số thập phân (vâng, tôi biết một số người thích gọi số là tiếng Ả Rập hoặc chính xác hơn là tiếng Ả Rập phương Tây. ) Dù sao đi nữa, tôi không thể tìm ra cách cho phép các số trừ lên đến và bao gồm cả năm. Tôi đã thử một số phương pháp. Có ai có đề xuất về cách giải quyết vấn đề này không?

rõ ràng. MDVC cho 1595 phải được chấp nhận nhưng MDVIIC phải không hợp lệ. Tôi biết rằng tất cả các trình chuyển đổi trực tuyến không cho phép số trừ nhưng tôi muốn cho phép chúng. Tôi nghĩ rằng các học giả đã sử dụng các số đến năm trong phép trừ vì tôi chưa thấy các số lớn hơn được sử dụng

Tôi đã tạo mã để chuyển đổi số thập phân sang số la mã nhưng tôi đang gặp khó khăn với phương pháp đảo ngược. Tôi nghĩ rằng đây là một câu hỏi về logic và php, không nhất thiết phải là một câu hỏi về mã cho tôi xem. Ví dụ: tôi đã nghĩ rằng nếu số đầu tiên và số cuối cùng lớn hơn tất cả các số ở giữa thì không hợp lệ nhưng logic này loại trừ MDVC. Tôi có nên quét một chuỗi để tìm tất cả các số không hợp lệ có thể không? . em dốt toán xin cho lời khuyên

Tôi hy vọng rằng điều này có ý nghĩa. bây giờ tôi mệt mỏi và phát ốm khi giải quyết vấn đề này. tôi cần phải giải tỏa tâm trí của tôi

Cảm ơn bạn và chúc tốt đẹp nhất

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

gw1500se

Đăng ngày 21 tháng 6 năm 2021

gw1500se

  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
    Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

  • Các thành viên
    • 1k
    • 3
  • Địa điểm. Georgia, Hoa Kỳ

    • Chia sẻ

Đăng ngày 21 tháng 6 năm 2021

Công cụ tìm kiếm là bạn của bạn

https. //www. mã băm. com/article/php-function-turn-integer-roman-numerals

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

jodunno

Đăng ngày 21 tháng 6 năm 2021

jodunno

  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

  • Các thành viên
    • 154
  • Địa điểm. Berlin, Đức

  • Tác giả

    • Chia sẻ

Đăng ngày 21 tháng 6 năm 2021

Xin chào gw1500se,

Mã trên trang được liên kết là để chuyển đổi số thập phân sang chữ số La Mã. Tất cả tôi đã sẵn sàng tạo mã cho điều đó. Tôi đã sử dụng một phương pháp khác cho chuyển đổi này. Tôi đã ánh xạ tất cả các số La Mã theo vị trí, sau đó chia số theo vị trí và hiển thị chữ số tương ứng ở vị trí thập phân chính xác của nó. Đơn vị, Hàng chục, Hàng trăm hoặc Hàng nghìn

Dù sao, bây giờ tôi muốn chuyển đổi số la mã thành số thập phân nhưng vẫn cho phép trừ số la mã lên đến và bao gồm cả năm

Do đó, MDVC cho năm 1595 (M=1000, D=500, 100-5 - 95 hoặc VC) thay vì số La Mã thông thường cho năm 1595 (MDXCV). Tôi muốn cho phép cả hai biểu mẫu trong quá trình chuyển đổi nhưng không cho phép các số trừ lớn hơn 5 (vì vậy MDVIIC không hợp lệ cho năm 1593)

Tôi không thể tìm ra cách để hoàn thành nhiệm vụ này. Tôi chỉ có thể tìm ra cách không cho phép tất cả các số trừ

Lời chúc tốt đẹp nhất và Cảm ơn bạn đã đọc và cố gắng giúp đỡ. . -)

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

gw1500se

Đăng ngày 21 tháng 6 năm 2021

gw1500se

  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
    Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

  • Các thành viên
    • 1k
    • 3
  • Địa điểm. Georgia, Hoa Kỳ

    • Chia sẻ

Đăng ngày 21 tháng 6 năm 2021

Xin lỗi. Tôi đã đọc sai OP của bạn và hiểu ngược lại. Còn cái này thì sao?

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

jodunno

Đăng ngày 21 tháng 6 năm 2021

jodunno

  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

  • Các thành viên
    • 154
  • Địa điểm. Berlin, Đức

  • Tác giả

    • Chia sẻ

Đăng ngày 21 tháng 6 năm 2021

Xin chào gw1500se,

Cảm ơn bạn đã dành thời gian để hỗ trợ tôi. Tôi đánh giá cao nó rất nhiều

Tôi đã thấy những bài đăng đó tại stackoverflow khi tôi tìm kiếm trên google các ví dụ. Tôi đã thử một số và kết quả giống như những nỗ lực của tôi khi lọc các số trừ. không làm việc. Ví dụ: MDVIIC phải không hợp lệ nhưng đó là phương pháp chỉ định 1593 không hợp lệ nhưng ait được xử lý trong mã là 1605. mã của tôi làm điều tương tự

Tôi có ngu ngốc không khi nghĩ rằng một mảng số hợp lệ so với mảng số không hợp lệ là con đường tốt nhất ở đây? . Có lẽ không có cách nào dễ dàng để làm điều này

Lời chúc tốt nhất

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

gw1500se

Đăng ngày 21 tháng 6 năm 2021

gw1500se

  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
    Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

  • Các thành viên
    • 1k
    • 3
  • Địa điểm. Georgia, Hoa Kỳ

    • Chia sẻ

Đăng ngày 21 tháng 6 năm 2021

Tôi không chắc nhưng cách duy nhất tôi nghĩ có thể đạt được là sử dụng Zend Frame và 'zend_measure_number'

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

requinix

Đăng ngày 21 tháng 6 năm 2021

requinix

  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
    Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

  • quản trị viên
  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
    • 14. 4k
    • 296
  • Địa điểm. Mỹ/Los_Angeles

    • Chia sẻ

Đăng ngày 21 tháng 6 năm 2021

Nói chung, nếu bạn gặp vấn đề với mã không làm những gì bạn muốn, đăng mã đã nói có lẽ là bước đầu tiên tốt. Có nhiều cách để thực thi các quy tắc chữ số, vì vậy, biết mã hiện tại của bạn là gì sẽ giúp xác định phương pháp nào sẽ hoạt động tốt nhất

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

Barand

Đăng ngày 21 tháng 6 năm 2021

Barand

  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
    Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

  • người điều hành
  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
    • 23. 4k
    • 352
  • Địa điểm. Cheshire, Vương quốc Anh
  • Lứa tuổi. 73
  • quyên góp cho tôi

    • Chia sẻ

Đăng ngày 21 tháng 6 năm 2021

1 giờ trước, jodunno said

nhưng không cho số trừ lớn hơn 5

Không có vẻ là một ý kiến ​​hay. Điều đó sẽ loại trừ, ví dụ, MCM = 1900

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

jodunno

Đăng ngày 21 tháng 6 năm 2021

jodunno

  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

  • Các thành viên
    • 154
  • Địa điểm. Berlin, Đức

  • Tác giả

    • Chia sẻ

Đăng ngày 21 tháng 6 năm 2021

Xin chào Requinix,

tôi đang cố gắng tránh rắc rối và không yêu cầu trợ giúp về mã. Tôi xin lỗi vì tâm trí của tôi không thể nắm bắt được điều này ngay bây giờ. Tôi xin lỗi vì phải nhờ giúp đỡ nhưng tôi rất mệt mỏi về tinh thần. Tôi không thể nhìn thấy câu trả lời ngay bây giờ. tôi đang làm gì đó sai

Trước khi tôi đăng mã của mình (tôi phải tìm nạp mã từ máy tính khác của mình, tôi sẽ quay lại ngay), tôi muốn nói với mọi người rằng mã của tôi cho phép MDVC và hiển thị MDVIC hoặc MDVIIC, v.v. là không hợp lệ. nhưng bây giờ các quy tắc trẻ con của tôi đang chặn MDIC và MDIIC và MDIIIC. Tôi đang thiếu một cái gì đó đơn giản ở đây và tôi không thể nắm bắt được nó. tôi đang rất thất vọng

Cảm ơn tất cả các bạn đã cố gắng hỗ trợ tôi mặc dù kỹ năng lập trình của tôi kém

Tôi sẽ trở lại với nỗ lực lọc mới nhất của mình

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

jodunno

Đăng ngày 21 tháng 6 năm 2021

jodunno

  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

  • Các thành viên
    • 154
  • Địa điểm. Berlin, Đức

  • Tác giả

    • Chia sẻ

Đăng ngày 21 tháng 6 năm 2021

được rồi, đây là nỗ lực cuối cùng của tôi. @Barand mã hiện tại của tôi cho phép MCM, lọc MDVIIIC nhưng cho phép MDVC. Bây giờ vấn đề là MDIC bị lỗi. Tôi đang thiếu một cái gì đó và thật ngu ngốc. Có lẽ đôi mắt và tâm trí khác có thể giúp tôi hiểu điều này?

php
//limit 3999 or MMMCMXCIX
$RomanDecimal = array('I' => 1, 'V' => 5, 'X' => 10, 'L' => 50, 'C' => 100, 'D' => 500, 'M' => 1000);
$total = $add = $subtract = 0;
//if L C D or M follow any V followed by one or more ones, then invalid
//invalid before L C D or M: VI, VII, VIII, IX

$RomanNumeral = 'MCM';
$Subtractive = array('IX', 'VIII', 'VII', 'VI');
$FollowedBy = array('L', 'C', 'D', 'M');

foreach ($Subtractive as $n) {
  foreach ($FollowedBy as $m) {
    $pos = strpos($RomanNumeral, $n . $m);
    if ($pos !== false) { $invalid = 1; break(2); }
  }
}
if (!empty($invalid)) { echo 'invalid number'; exit; }
echo $RomanNumeral . '
'
; $RomanNumeral = str_split($RomanNumeral); $PlaceCount = count($RomanNumeral); $count = 1; $total = 0; foreach ($RomanNumeral as $i) { if (!empty($skip)) { $skip = 0; $count++; continue; } if ($count < $PlaceCount) { if ($RomanDecimal[$i] < $RomanDecimal[$RomanNumeral[$count]]) { if (in_array($RomanDecimal[$RomanNumeral[$count]], $FollowedBy)) { $subtract += $RomanDecimal[$i]; $count++; continue; } if ($RomanDecimal[$i] == $RomanDecimal[$RomanNumeral[$count]]) { $subtract += $RomanDecimal[$i]; $subtract += $RomanDecimal[$RomanNumeral[$count]]; $count++; $skip = 1; continue; } $subtract += $RomanDecimal[$i]; } else { $add += $RomanDecimal[$i]; } } else { $add += $RomanDecimal[$i]; } $count++; } $total = $add - $subtract; echo $total; ?>

 

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

gw1500se

Đăng ngày 21 tháng 6 năm 2021

gw1500se

  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
    Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

  • Các thành viên
    • 1k
    • 3
  • Địa điểm. Georgia, Hoa Kỳ

    • Chia sẻ

Đăng ngày 21 tháng 6 năm 2021 (đã chỉnh sửa)

Không chắc liệu điều này có phù hợp với bạn hay không nhưng tôi đã tìm thấy biểu thức chính quy này để xác thực các chữ số La Mã

^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$

 

Đã chỉnh sửa ngày 21 tháng 6 năm 2021 bởi gw1500se

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

jodunno

Đăng ngày 21 tháng 6 năm 2021

jodunno

  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

  • Các thành viên
    • 154
  • Địa điểm. Berlin, Đức

  • Tác giả

    • Chia sẻ

Đăng ngày 21 tháng 6 năm 2021

Xin chào gw1500se,

Cảm ơn bạn đã dành thời gian để đào mã này, nó là mã rất hữu ích. Tôi đã quá bận rộn với khái niệm này và tôi quên mất việc xác thực. Đóng góp xuất sắc. Nhiều đánh giá cao

Tôi đã hoàn thành chiến đấu trong ngày. Tôi có một cuộc hẹn sớm vào buổi sáng. Tôi đã phẫu thuật trên cánh tay của mình và tôi đã kiểm tra. Một phần của vấn đề mã này là cánh tay của tôi. Tôi không thể sử dụng chuột nhiều và gõ rất đau. Tôi thuận tay phải và cuộc phẫu thuật diễn ra trên cánh tay phải của tôi. Dù sao thì tôi cũng đi ngủ sớm (chênh lệch múi giờ ở Deutschland. ) Mặc dù tôi vẫn giữ giờ Mỹ trên hệ thống của mình

Lời chúc tốt đẹp nhất và chúc mọi người ngủ ngon. Tôi sẽ thử lại vào ngày mai

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

Barand

Đăng ngày 22 tháng 6 năm 2021

Barand

  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
    Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

  • người điều hành
  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
    • 23. 4k
    • 352
  • Địa điểm. Cheshire, Vương quốc Anh
  • Lứa tuổi. 73
  • quyên góp cho tôi

    • Chia sẻ

Đăng ngày 22 tháng 6 năm 2021

Chỉ để cho vui

echo ad_decimo('XIIX');        // 18         (used by Roman 18th legion)
echo ad_decimo('MCMIL');       // 1949
echo ad_decimo('MCMXLIX');     // 1949

function ad_decimo($str)
{
    $M = 1000;
    $D = 500;
    $C = 100;
    $L = 50;
    $X = 10;
    $V = 5;
    $I = 1;
         
    foreach (str_split(strtoupper($str)) as $r) {
        if (!isset($$r)) return 0;
        $ra[] = [ 'r' => $r, 'v' => $$r ];
    }
    $d = 0;
    foreach ($ra as $p => $a) {
        $d += $a['v'] * subtracto($ra, $p, $a['v']);
    }
    return $d;
}

function subtracto($rarr, $pos, $val)
{
    // is there a higher value letter following this one?    
    for($i=$pos+1, $k=count($rarr); $i<$k; $i++) {
        if ($rarr[$i]['v'] > $val) return -1;
    }
    return 1;
}

 

  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
    1

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

jodunno

Đăng ngày 22 tháng 6 năm 2021

jodunno

  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

  • Các thành viên
    • 154
  • Địa điểm. Berlin, Đức

  • Tác giả

    • Chia sẻ

Đăng ngày 22 tháng 6 năm 2021

Chào Thương hiệu,

Tôi hy vọng rằng bạn đang làm tốt. Gần đây tôi không ở đây nhiều do có một ca phẫu thuật. tôi không quên bạn

Tôi đã biết rằng bạn là một lập trình viên xuất sắc và mã mà bạn đã đăng minh họa cho tuyên bố này

Tuy nhiên, và cố gắng tỏ ra không vô ơn, vẫn có một vấn đề tồn tại ngay cả trong các chức năng của bạn. Hãy để tôi giải thích, hôm nay tôi đã cố gắng giải quyết vấn đề này và tôi đã có một giải pháp hiệu quả (thật kinh khủng so với mã của bạn). Sau đó, tôi đã vô tình sao chép và dán IC giữa XX, do đó đã cố gắng chuyển đổi XICX. Một lần nữa, nó hoàn toàn tình cờ. Mã của tôi - được cho là đang hoạt động - thực sự đã chuyển đổi số này, số này sẽ không hợp lệ. Chương trình của bạn cũng chuyển đổi số này

Tôi sắp từ bỏ ý tưởng này. Tôi dường như không thể xác định thế nào là hợp lệ và không hợp lệ. Tôi chắc chắn rằng Donald Knuth có thể đưa ra một giải pháp nhưng tôi không thể làm như vậy với kỹ năng toán học kém của mình. Và thực sự, kỹ năng logic của tôi cũng không ấn tượng lắm vì tôi không thể tìm ra cách xác định ngay cả một số không hợp lệ

Tôi cảm ơn bạn đã đóng góp mã của bạn. Tôi sẽ từ bỏ việc này và chấp nhận thực tế là các số không hợp lệ sẽ vẫn được xử lý hoặc tôi sẽ làm việc này từ từ như một dự án phụ

Lời chúc tốt nhất

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

Barand

Đăng ngày 22 tháng 6 năm 2021

Barand

  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
    Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

  • người điều hành
  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
    • 23. 4k
    • 352
  • Địa điểm. Cheshire, Vương quốc Anh
  • Lứa tuổi. 73
  • quyên góp cho tôi

    • Chia sẻ

Đăng ngày 22 tháng 6 năm 2021

Tôi sẽ không nói XICX không hợp lệ hơn XIX. Không bình thường, vâng,

XICX = -10 - 1  + 100 + 10 = 99

Quy tắc là bất kỳ số nào nhỏ hơn xảy ra trước khi số lớn hơn bị trừ

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

Barand

Đăng ngày 22 tháng 6 năm 2021

Barand

  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
    Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

  • người điều hành
  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
    • 23. 4k
    • 352
  • Địa điểm. Cheshire, Vương quốc Anh
  • Lứa tuổi. 73
  • quyên góp cho tôi

    • Chia sẻ

Đăng ngày 22 tháng 6 năm 2021

Tái bút

Tuy nhiên, tôi nghĩ IXCX nên cho 101 vì vậy tôi vẫn còn một số việc phải làm

IXCX = -9 + 100 + 10 = 101

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

jodunno

Đăng ngày 22 tháng 6 năm 2021

jodunno

  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

  • Các thành viên
    • 154
  • Địa điểm. Berlin, Đức

  • Tác giả

    • Chia sẻ

Đăng ngày 22 tháng 6 năm 2021

Tôi có thể thấy rằng các số nhỏ hơn trước và sau các số lớn hơn với phép trừ có thể không hợp lệ nhưng tôi không biết cách mã hóa khái niệm đó với tất cả các khái niệm khác được đưa vào phương trình

Nhân tiện, đây là mã mà tôi đã làm sáng nay. LOL nó rất giống trường mẫu giáo so với mã của bạn. Như bạn có thể thấy, tôi chỉ chiến đấu với mã mà tôi biết để hoàn thành những gì tôi đang cố gắng thực hiện. Tôi không ở trình độ của bạn cho chắc chắn. CƯỜI

php
//limit 3999 or MMMCMXCIX
$RomanNumeralInput = strtoupper('XICX'); //XICX
$RomanNumeral = strtoupper($RomanNumeralInput);
$Ones = array('I' => 1, 'II' => 2, 'III' => 3, 'IV' => 4, 'V' => 5, 'VI' => 6, 'VII' => 7, 'VIII' => 8, 'IX' => 9);
$Multiples = array('X' => 10, 'XL' => 40, 'L' => 50, 'XC' => 90, 'C' => 100, 'CD' => 400, 'D' => 500, 'CM' => 900, 'M' => 1000);
$MultiplesR = array('IX', 'XL', 'XC', 'CD', 'CM');
$Filter = array_merge($Ones, $Multiples);
$invalid = $total = $add = $subtract = 0;

foreach ($MultiplesR as $m) {
    $pos = strpos($RomanNumeralInput, $m);
    if ($pos !== false) { $RomanNumeral = str_replace($m, '', $RomanNumeral);
    $add += $Filter[$m]; }
}
$validSubtraction = array('IV', 'III', 'II', 'I', 'V');
$FollowedBy = array('X', 'L', 'C', 'D', 'M');
foreach ($validSubtraction as $m) {
  foreach ($FollowedBy as $n) {
    $pos = strpos($RomanNumeral, $m . $n);
    if ($pos !== false) { $RomanNumeral = str_replace($m, '', $RomanNumeral);
      $subtract += $Ones[$m]; break(2); }
  }
}
$invalidSubtraction = array('I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX');
foreach ($invalidSubtraction as $m) {
  foreach ($FollowedBy as $n) {
    $pos = strpos($RomanNumeral, $m . $n);
    if ($pos !== false) { $invalid = 1; break(2); }
  }
}
$RomanNumeral = str_split($RomanNumeral);
$PlaceCount = count($RomanNumeral);
$count = 1;
foreach ($RomanNumeral as $i) {
  $add += $Filter[$i];
}
if (!$invalid) {
  $total = $add - $subtract;
  echo $RomanNumeralInput;
  echo '
'
; echo $total; } else { echo 'invalid number'; } ?>

 

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

jodunno

Đăng ngày 22 tháng 6 năm 2021

jodunno

  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

  • Các thành viên
    • 154
  • Địa điểm. Berlin, Đức

  • Tác giả

    • Chia sẻ

Đăng ngày 22 tháng 6 năm 2021

Tôi sẽ gọi nó là một ngày bây giờ. Tôi mệt mỏi và cánh tay của tôi bị đau. Tôi muốn thư giãn một chút trước khi đi ngủ

Tôi hy vọng rằng bạn, Barand và những người khác có một ngày tuyệt vời (hoặc buổi tối hoặc đêm)

Lời chúc tốt nhất

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

Barand

Đăng ngày 22 tháng 6 năm 2021

Barand

  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
    Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

  • người điều hành
  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
    • 23. 4k
    • 352
  • Địa điểm. Cheshire, Vương quốc Anh
  • Lứa tuổi. 73
  • quyên góp cho tôi

    • Chia sẻ

Đăng ngày 22 tháng 6 năm 2021

Có vẻ như giải pháp là tìm kiếm các chuỗi con có giá trị thấp hơn trước một chuỗi thậm chí còn lớn hơn

    IX     C   X
   |___| 
     |
    -9    100  10 

 

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

jodunno

Đăng ngày 23 tháng 6 năm 2021

jodunno

  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

  • Các thành viên
    • 154
  • Địa điểm. Berlin, Đức

  • Tác giả

    • Chia sẻ

Đăng ngày 23 tháng 6 năm 2021

Chào buổi sáng, tôi đã suy nghĩ không ngừng về vấn đề này. Tôi bắt đầu nhận ra rằng một rào cản để hiểu một chữ số La Mã là thiếu sự cô lập. Tôi không biết nếu một số trừ tồn tại hay không. Vì vậy, tôi đã nghĩ rằng nếu chúng ta có thể tách biệt các số được ghép nối (VII hoặc IX) với các số đơn lẻ (X, M, C, v.v.) thì chúng ta sẽ có cách để biết chúng ta đang giải quyết vấn đề gì. Tuy nhiên, tôi không nghĩ rằng chúng ta cần tách riêng các cặp cộng (VI, VII, v.v. ) bởi vì chúng sẽ được xử lý chính xác thông qua bổ sung từ sự cô lập. Vì vậy, tôi đã thử một tập lệnh nhanh để tách biệt phép trừ và sử dụng mã trước đây của mình để phát hiện phép trừ không chuẩn. Tôi cần một ý kiến ​​​​về phương pháp này. Bạn có nghĩ rằng đó là một ý tưởng tốt?

đây là mã mới của tôi để tách biệt các số trừ phép trừ không chuẩn. Hãy cho tôi biết những gì bạn nghĩ, xin vui lòng

php
//limit 3999 or MMMCMXCIX
$RomanNumeralInput = strtoupper('MMMCMXCIX'); //XICX ixcx
$RomanDecimal = array('I' => 1, 'IV' => 4, 'V' => 5, 'IX' => 9, 'X' => 10, 'XL' => 40, 'L' => 50, 'XC' => 90, 'C' => 100, 'CD' => 400, 'D' => 500, 'CM' => 900, 'M' => 1000);
$invalid = 0;

$Subtractive = array('IX', 'VIII', 'VII', 'VI');
$FollowedBy = array('X', 'L', 'C', 'D', 'M');
foreach ($Subtractive as $n) {
  foreach ($FollowedBy as $m) {
    $pos = strpos($RomanNumeralInput, $n . $m);
    if ($pos !== false) { $invalid = 1; break(2); }
  }
}
if ($invalid) { echo $RomanNumeralInput . ' is a nonstandard Roman Numeral'; exit; }

$RomanNumeral = str_split($RomanNumeralInput);
$Isolation = array();
$PlaceCount = count($RomanNumeral);
$count = 1;
$skip = 0;
foreach ($RomanNumeral as $i) {
  if ($skip) { $skip = 0; $count++; continue; }
  if ($count < $PlaceCount) {
    if ($RomanDecimal[$i] < $RomanDecimal[$RomanNumeral[$count]]) {
      array_push($Isolation, $i . $RomanNumeral[$count]);
      $count++; $skip = 1; continue;
    } array_push($Isolation, $i); $count++;
  } else { array_push($Isolation, $i); }
}
print_r($Isolation);

?>

vì vậy bây giờ các số đã được tách biệt, chúng tôi có thể có cơ hội tốt hơn để phân tích số cho đầu vào không chuẩn. đúng?

Lời chúc tốt nhất,

John

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

Barand

Đăng ngày 23 tháng 6 năm 2021

Barand

  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
    Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

  • người điều hành
  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?
    • 23. 4k
    • 352
  • Địa điểm. Cheshire, Vương quốc Anh
  • Lứa tuổi. 73
  • quyên góp cho tôi

    • Chia sẻ

Đăng ngày 23 tháng 6 năm 2021

Mảng trừ của bạn còn lâu mới đầy đủ. Bạn có IX và VI vậy tại sao không có XI và IV. Và II như trong XIII?

16 giờ trước, Barand nói

Có vẻ như giải pháp là tìm kiếm các chuỗi con có giá trị thấp hơn trước một chuỗi thậm chí còn lớn hơn

    IX     C   X
   |___| 
     |
    -9    100  10 

 

Giải pháp đệ quy này thực hiện cách tiếp cận trên

	XIIX                   18
	IXCX                  101
	XICX                   99
	MCMIL                1949
	MCMXLIX              1949
	MCMXXXXVIIII         1949
	MDCCCCXXXXVIIII      1949

Mã số

________số 8

 

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

jodunno

Đăng ngày 23 tháng 6 năm 2021

jodunno

  • Làm cách nào để chuyển đổi số La Mã thành số nguyên trong PHP?

  • Các thành viên
    • 154
  • Địa điểm. Berlin, Đức

  • Tác giả

    • Chia sẻ

Đăng ngày 23 tháng 6 năm 2021

Chào Thương hiệu,

bài đăng mã mới của tôi là nỗ lực đầu tiên để cô lập. Kịch bản chưa hoàn thành trong bài viết. Tuy nhiên, tôi chỉ bổ sung những yếu tố còn thiếu. Kịch bản mới nhất của tôi dường như hoạt động như mong đợi nhưng tôi chưa kiểm tra mọi tổ hợp số

Tôi bắt đầu làm điều này bởi vì tôi thực sự đã xem một cuốn sách cũ về MDVC và tôi không biết cách tính toán nó. Tôi đã được giới thiệu về các chữ số La Mã trừ đi vào thời điểm đó. Tôi thậm chí không thể nhớ D là gì (bây giờ tôi biết nó là 500). Tôi không sử dụng số Latinh. Dù sao, suy nghĩ đầu tiên của tôi là sử dụng một công cụ chuyển đổi trực tuyến cho MDVC nhưng tất cả họ đều từ chối số này là không hợp lệ. Tôi hét vào màn hình "NHƯNG TÔI THẤY NÓ TRONG MỘT SÁCH CŨ". CƯỜI. Tôi đã quyết định rằng tôi muốn thêm một công cụ chuyển đổi chữ số La Mã vào trang web của mình để cho phép trừ các chữ số La Mã. Tuy nhiên, tôi chưa thấy số trừ nào lớn hơn 5 và thực sự viết VIIIX thay vì III là không hợp lý. Tôi có thể hiểu MDVC nhưng không hiểu MDIXC vì viết MDCI sẽ dễ dàng hơn. Tôi muốn kiểm soát phép trừ đến năm

Dù sao, đây là mã mới nhất của tôi cũng kiểm tra cái gọi là phép trừ hợp lệ của tôi và thêm nó vào mảng cuối cùng. Nó dường như được làm việc

php
//limit 3999 or MMMCMXCIX
$RomanNumeralInput = strtoupper('xiix'); //XICX ixcx MDIIC
$RomanDecimal = array('I' => 1, 'IV' => 4, 'V' => 5, 'IX' => 9, 'X' => 10, 'XL' => 40, 'L' => 50, 'XC' => 90, 'C' => 100, 'CD' => 400, 'D' => 500, 'CM' => 900, 'M' => 1000);
$invalid = $subtraction = $subtractionCount = $subtractionIsolated = $append = 0;
echo $RomanNumeralInput . '
'
; $Subtractive = array('IX', 'VIII', 'VII', 'VI'); $FollowedBy = array('X', 'L', 'C', 'D', 'M'); foreach ($Subtractive as $n) { foreach ($FollowedBy as $m) { $pos = strpos($RomanNumeralInput, $n . $m); if ($pos !== false) { $invalid = 1; break(2); } } } if ($invalid) { echo ' is a nonstandard Roman Numeral'; exit; } $validSubtraction = array('IV', 'III', 'II', 'I', 'V'); foreach ($validSubtraction as $m) { foreach ($FollowedBy as $n) { $pos = stripos($RomanNumeralInput, $m . $n); if ($pos !== false && $m . $n !== 'IX') { $subtraction = 1; $subtractionCount = strlen($m . $n); $subtractionIsolated = $m . $n; $RomanNumeralInput = str_replace($m.$n, '', $RomanNumeralInput); break(2); } } } $Isolation = array(); if (!empty($RomanNumeralInput)) { $RomanNumeral = str_split($RomanNumeralInput); $PlaceCount = count($RomanNumeral); if ($pos >= $PlaceCount) { $append = 1; unset($pos); } $count = 1; $stringcount = 0; $skip = 0; foreach ($RomanNumeral as $i) { if (isset($pos) && $stringcount === $pos) { array_push($Isolation, $subtractionIsolated); unset($pos); } if ($skip) { $skip = 0; $count++; $stringcount++; continue; } if ($count < $PlaceCount) { if ($RomanDecimal[$i] < $RomanDecimal[$RomanNumeral[$count]]) { array_push($Isolation, $i . $RomanNumeral[$count]); $count++; $stringcount++; $skip = 1; continue; } array_push($Isolation, $i); $count++; } else { array_push($Isolation, $i); } $stringcount++; } if ($append) { array_push($Isolation, $subtractionIsolated); } } else { array_push($Isolation, $subtractionIsolated); } echo '
'
; print_r($Isolation); ?>

XICX vẫn làm tôi khó chịu. Đó là lý do tại sao tôi tiếp tục cố gắng loại trừ nó. Nó thực sự là một chữ số la mã phi tiêu chuẩn kỳ lạ. Nó làm tôi khó chịu như một con muỗi. thậm chí ixcx nhưng tập lệnh mới nhất của tôi từ chối ixcx

Làm cách nào để chuyển đổi Roman thành số nguyên trong PHP?

$roman_values=array( 'I' => 1, 'V' => 5, 'X' => 10, 'L' => 50, 'C' => 100, 'D' => . Tôi sẽ sử dụng N để biểu thị số 0, ngoài ra chỉ hỗ trợ số nguyên dương. Tôi không thể sử dụng thư viện PEAR cho số La Mã. That means the highest possible number is 3999 (MMMCMXCIX). I will use N to represent zero, other than that only positive integers are supported. I cannot use the PEAR library for Roman numbers.

Làm cách nào để chuyển đổi số La Mã thành số nguyên Java?

Tôi có thể được đặt trước V (5) và X để tạo thành 4 và 9. Có thể đặt X trước L (50) và C để tạo thành 40 và 90. Có thể đặt C trước D (500) và M để tạo thành 400 và 900. . Chữ số La Mã

XXIX có nghĩa là gì trong bộ chuyển đổi chữ số La Mã?

Một chữ số La Mã đại diện cho số hai mươi chín (29).

Làm cách nào để chuyển đổi số La Mã sang số trong C?

Chương trình C chuyển đổi số La Mã thành số thập phân .
Lấy một số la mã làm đầu vào
Sử dụng câu lệnh switch xác định giá trị của từng chữ số La Mã
Thông qua câu lệnh chuyển đổi, truy cập từng chữ số của số La Mã và tính toán giá trị
In giá trị và thoát